Contexte: Certaines de nos contraintes de colonne par défaut ont été générées sans noms explicites, nous obtenons donc des noms amusants qui varient d'un serveur à l'autre comme: DF__User__TimeZoneIn__5C4D869D
Je préférerais les avoir tous gérables avec un nom cohérent comme DF_Users_TimeZoneInfo
pour que nous puissions nous assurer que les contraintes appropriées existent sur les futures tables cibles (comme dans RedGate compare, ou même simplement visuellement)
J'ai un script qui fonctionne principalement pour ce que je veux:
select 'sp_rename N''[' + s.name + '].[' + d.name + ']'',
N''[DF_' + t.name + '_' + c.name + ']'', ''OBJECT'';'
from sys.tables t
join
sys.default_constraints d
on d.parent_object_id = t.object_id
join
sys.columns c
on c.object_id = t.object_id
and c.column_id = d.parent_column_id
join sys.schemas s
on t.schema_id = s.schema_id
WHERE d.NAME like 'DF[_][_]%'
Mais cela me donne juste un jeu de résultats, et non quelque chose que je peux réellement passer à un exécuteur ou autre.
Comment puis-je faire cela pour que je puisse simplement exécuter ces sp_rename
scripts sans avoir à recourir à la copie de tous les éléments retournés et à les coller dans une nouvelle fenêtre de requête et à les réexécuter? Essayer d'enregistrer autant de frappes que possible pour que je puisse corriger cela dans de nombreux environnements.