SSMS
 sql >> Base de Dados >  >> Database Tools >> SSMS

Escrevendo uma consulta para gerar alguns scripts para renomear algumas colunas no banco de dados inteiro


Embora renomear a coluna da tabela não seja difícil usando sp_rename , alterar as visualizações de referência e os procedimentos armazenados não é trivial sem a ajuda de ferramentas.

O T-SQL abaixo irá gerar um script para renomear todas as colunas que começam com uma letra minúscula. No entanto, é frágil, pois as renomeações falharão quando existirem dependências impostas (por exemplo, objetos vinculados ao esquema) e não manipularão exibições, procs. 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;

Eu sugiro que você use SSDT , que está incluído no Visual Studio 2019 (incluindo o Community Edition gratuito). Crie um novo projeto de banco de dados SQL Server, importe o banco de dados existente, renomeie a coluna usando a opção Refatorar-->Renomear e publique o projeto no banco de dados de destino. Publicar oferece a opção de aplicar as alterações imediatamente e/ou apenas gerar o script. O script incluirá DDL para a renomeação da coluna, assim como alterará o nome da coluna em todos os objetos de referência.

Se a coluna tiver um alias com o nome indesejado em visualizações, procs, etc., esses aliases também precisarão ser alterados.