シナリオ:
あなたはSQLServer開発者またはSQLServerDBAとして働いています。あなたはデータベースオブジェクトの命名基準に取り組んでいます。データベースの1つで、主キー制約が、以下に赤で示されている「Pk_SchemaName_TableName_ColumnName」という会社の命名規則に準拠していないことに気づきました。
SQLServerデータベースの複数のテーブルの主キー制約の名前を変更する方法-SQLチュートリアル>
解決策:
まず最初に、命名規則の標準に準拠していない主キー制約を見つける必要があります。会社ごとに異なる命名規則文書を作成できます。会社が主キー制約にスキーマ名を含めていない可能性があります。選択クエリを変更して、以下のスクリプトからTable_Schemaを削除できます。USE YourDatabaseName
GO
--Declare Variables
DECLARE @DatabaseName AS VARCHAR(128)
DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @ColumnName AS VARCHAR(128)
DECLARE @ConstraintName AS VARCHAr(128)
DECLARE CUR CURSOR
FOR
--Get Primary Key Constraint
Select
TC.Table_Catalog as DatabaseName,
TC.Table_Schema AS TableSchema,
TC.Table_Name AS TableName,
CCU.Column_Name AS ColumnName,
TC.Constraint_Name AS ConstraintName
From
information_Schema.Table_Constraints TC
INNER JOIN
Information_Schema.constraint_column_usage CCU
on TC.Constraint_Name=CCU.Constraint_Name
and TC.Table_Name=CCU.Table_Name
where
Constraint_Type='PRIMARY KEY'
--Change your criteria as per your naming convention
and 'Pk_'+TC.Table_Schema+'_'+TC.Table_Name
+'_'+CCU.Column_Name<>TC.Constraint_Name
OPEN Cur
FETCH NEXT
FROM Cur
INTO @DatabaseName,@SchemaName,@TableName,@ColumnName, @ConstraintName
WHILE @@FETCH_STATUS = 0
BEGIN
--Build dynamic sql for each database
DECLARE @SQL VARCHAR(MAX) = NULL
SET @SQL ='sp_rename '+Char(10)
SET @SQL+='@objname ='''+@SchemaName+'.'+@ConstraintName+''','
SET @SQL+='@newname='''+'Pk_'+@SchemaName
SET @SQL+='_'+@TableName+'_'+@ColumnName+''','
SET @SQL+='@objtype = ''object'''
--EXEC (@SQL)
PRINT @SQL
FETCH NEXT
FROM Cur
INTO @DatabaseName,@SchemaName,@TableName,@ColumnName, @ConstraintName END CLOSE Cur DEALLOCATE Cur
データベースの1つで上記のスクリプトを実行しました。これは、会社の標準に準拠していない2つの主キー制約について表示されるステートメントです。
SQLデータベース内の複数のSQLServerテーブルの主キー制約の名前を変更する方法主キー制約は、以下に示すように正常に名前が変更されました。
SQLServerのSQLServerデータベースの主キー制約を確認して名前を変更する方法