Hintergrund: Einige unserer Standardspalteneinschränkungen wurden ohne explizite Namen generiert, sodass wir unterhaltsame Namen erhalten, die von Server zu Server variieren, wie z. DF__User__TimeZoneIn__5C4D869D
Ich würde es vorziehen, wenn sie alle mit einer einheitlichen Benennung wie verwaltet DF_Users_TimeZoneInfo
werden könnten, damit wir sicherstellen können, dass die entsprechenden Einschränkungen für zukünftige Zieltabellen bestehen (wie im RedGate-Vergleich oder sogar nur visuell).
Ich habe ein Skript, das hauptsächlich für das funktioniert, was ich will:
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[_][_]%'
Aber das gibt mir nur eine Ergebnismenge und nichts, was ich tatsächlich an einen Exec oder was auch immer weitergeben kann.
Wie kann ich dies tun, damit ich diese sp_rename
Skripte einfach ausführen kann, ohne alle zurückgegebenen Elemente kopieren und in ein neues Abfragefenster einfügen und erneut ausführen zu müssen? Ich versuche, so viele Tastenanschläge wie möglich zu speichern, damit ich dies in vielen Umgebungen korrigieren kann .
quelle
Antworten:
Ok, ein paar Dinge.
EXEC
wenn gespeicherte Prozeduren ausgeführt werden; Die Kurzschrift ohneEXEC
funktioniert nur, wenn es sich um die erste Anweisung im Stapel handelt (und dies ist hier nicht der Fall).QUOTENAME()
anstatt manuell eckige Klammern selbst anzubringen. In diesem Fall sind Sie wahrscheinlich sicher, aber es gibt Fälle, in denen der manuelle Ansatz nicht funktioniert.Sie können die
PRINT
Ausgabe testen , sie ist jedoch nicht unbedingt vollständig, wenn Ihr Gesamtbefehl> 8 KB ist ( einige alternative Ansätze finden Sie in diesem Tipp ).quelle
sp_help; sp_help;
.Basierend auf Ihrer Frage, die Sie entfernt haben "Automatisieren Sie das gleiche Skript für einige der Datenbanken auf der Instanz".
Unten finden Sie den Code, der Ihnen helfen wird
quelle