SSMS
 sql >> Base de données >  >> Database Tools >> SSMS

Écrire une requête pour générer des scripts pour renommer certaines colonnes dans toute la base de données

Bien que renommer la colonne de la table ne soit pas difficile en utilisant sp_rename , changer les vues de référence et les procédures stockées n'est pas trivial sans l'aide d'outils.

Le T-SQL ci-dessous générera un script pour renommer toutes les colonnes commençant par une lettre minuscule. Cependant, il est fragile dans la mesure où les changements de nom échoueront lorsque des dépendances appliquées existent (par exemple, des objets liés au schéma) et ne géreront pas les vues, les procs. et. al.

SELECT 
      N'EXEC sp_rename ''' 
    + QUOTENAME(s.name) + N'.' + QUOTENAME(t.name) + N'.' + QUOTENAME(c.name) 
    + ''', ''' + UPPER(LEFT(c.name, 1)) + SUBSTRING(c.name,2,127) + ''', ''COLUMN'';'
FROM sys.schemas AS s
JOIN sys.tables AS t ON t.schema_id = s.schema_id
JOIN sys.columns AS c ON c.object_id = t.object_id
WHERE 
    LEFT(c.name, 1) COLLATE Latin1_General_CS_AS <> UPPER(LEFT(c.name, 1)) COLLATE Latin1_General_CS_AS
    AND t.is_ms_shipped = 0;

Je vous suggère d'utiliser SSDT , qui est inclus avec Visual Studio 2019 (y compris l'édition communautaire gratuite). Créez un nouveau projet de base de données SQL Server, importez la base de données existante, renommez la colonne à l'aide de l'option Refactor-->Rename, puis publiez le projet sur la base de données cible. Publier offre la possibilité d'appliquer les modifications immédiatement et/ou de simplement générer le script. Le script inclura le DDL pour renommer la colonne et modifiera le nom de la colonne dans tous les objets de référence.

Si la colonne est aliasée avec le nom indésirable dans les vues, les procédures, etc., ces alias devront également être modifiés.