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

Scrivere una query per generare alcuni script per rinominare alcune colonne nell'intero database

Anche se rinominare la colonna della tabella non è difficile usando sp_rename , modificare le viste di riferimento e le stored procedure non è banale senza l'ausilio di strumenti.

Il seguente T-SQL genererà uno script per rinominare tutte le colonne che iniziano con una lettera minuscola. Tuttavia, è fragile in quanto le rinominazioni falliranno quando esistono dipendenze forzate (ad es. Oggetti legati allo schema) e non gestiranno viste, processi. 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;

Ti suggerisco di utilizzare SSDT , incluso in Visual Studio 2019 (inclusa la Community Edition gratuita). Creare un nuovo progetto di database di SQL Server, importare il database esistente, rinominare la colonna utilizzando l'opzione Refactor-->Rinomina, quindi pubblicare il progetto nel database di destinazione. Pubblica offre la possibilità di applicare le modifiche immediatamente e/o semplicemente di generare lo script. Lo script includerà DDL per la ridenominazione della colonna così come cambierà il nome della colonna in tutti gli oggetti di riferimento.

Se la colonna è alias con il nome indesiderato in viste, processi e così via, sarà necessario modificare anche tali alias.