SSMS
 sql >> Datenbank >  >> Database Tools >> SSMS

Schreiben einer Abfrage zum Generieren einiger Skripts zum Umbenennen einiger Spalten in der gesamten Datenbank

Obwohl das Umbenennen der Tabellenspalte mit sp_rename nicht schwierig ist , ist das Ändern der referenzierenden Ansichten und gespeicherten Prozeduren ohne die Hilfe von Tools nicht trivial.

Das folgende T-SQL generiert ein Skript zum Umbenennen aller Spalten, die mit einem Kleinbuchstaben beginnen. Es ist jedoch insofern anfällig, als Umbenennungen fehlschlagen, wenn erzwungene Abhängigkeiten vorhanden sind (z. B. schemagebundene Objekte) und Ansichten und Prozesse nicht verarbeitet werden. 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;

Ich schlage vor, Sie verwenden SSDT , das in Visual Studio 2019 (einschließlich der kostenlosen Community Edition) enthalten ist. Erstellen Sie ein neues SQL Server-Datenbankprojekt, importieren Sie die vorhandene Datenbank, benennen Sie die Spalte mit der Option Umgestalten -> Umbenennen um und veröffentlichen Sie das Projekt dann für die Zieldatenbank. Veröffentlichen bietet die Möglichkeit, die Änderungen sofort anzuwenden und/oder nur das Skript zu generieren. Das Skript enthält DDL für die Spaltenumbenennung und ändert den Spaltennamen in allen referenzierenden Objekten.

Wenn die Spalte in Views, Procs usw. mit dem unerwünschten Namen versehen ist, müssen diese Aliase ebenfalls geändert werden.