シナリオ:
あなたは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データベースの主キー制約を確認して名前を変更する方法