Scénario :
Vous travaillez en tant que Développeur SQL Server ou DBA SQL Server. Vous travaillez sur des normes de nommage pour les objets de base de données. Vous avez remarqué que dans l'une des bases de données, les contraintes de clé primaire ne respectent pas les normes de convention de dénomination de votre entreprise, à savoir "Pk_SchemaName_TableName_ColumnName", comme indiqué ci-dessous en rouge.
Comment renommer la contrainte de clé primaire pour plusieurs tables dans la base de données SQL Server - Tutoriel SQLSolution :
Tout d'abord, nous devons trouver les contraintes de clé primaire qui ne suivent pas les normes de convention de nommage. Chaque entreprise peut avoir un document de convention de nommage différent. Votre entreprise peut ne pas inclure le nom du schéma dans la contrainte de clé primaire. Vous pouvez modifier la requête de sélection et supprimer Table_Schema du script ci-dessous.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
J'ai exécuté le script ci-dessus sur l'une de mes bases de données et voici les déclarations imprimées que je vois pour deux contraintes de clé primaire qui ne suivaient pas les normes de dénomination selon les normes de mon entreprise.
Comment renommer les contraintes de clé primaire pour plusieurs tables SQL Server dans SQL Database Les contraintes de clé primaire ont été renommées avec succès comme indiqué ci-dessous.
Comment vérifier et renommer les contraintes de clé primaire dans la base de données SQL Server dans SQL Server