Background: alcuni dei nostri vincoli di colonna predefiniti sono stati generati senza nomi espliciti, quindi otteniamo nomi divertenti che variano da server a server come: DF__User__TimeZoneIn__5C4D869D
Preferirei averli tutti gestibili con una denominazione coerente come in DF_Users_TimeZoneInfo
modo da poter garantire che esistano i vincoli appropriati sulle future tabelle target (come nel confronto RedGate, o anche solo visivamente)
Ho una sceneggiatura che funziona principalmente per quello che voglio:
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[_][_]%'
Ma questo mi dà solo un set di risultati, e non qualcosa che posso effettivamente passare in un dirigente o altro.
Come posso farlo in modo da poter semplicemente eseguire quegli sp_rename
script senza dover ricorrere a copiare tutti gli elementi restituiti e incollarli in una nuova finestra di query ed eseguirli di nuovo? Sto cercando di salvare il maggior numero possibile di tasti in modo da poterlo correggere in molti ambienti.