sql >> Base de Datos >  >> Database Tools >> SSMS

Escribir una consulta para generar algunos scripts para cambiar el nombre de algunas columnas en toda la base de datos

Aunque cambiar el nombre de la columna de la tabla no es difícil usando sp_rename , cambiar las vistas de referencia y los procedimientos almacenados no es trivial sin la ayuda de herramientas.

El T-SQL a continuación generará un script para cambiar el nombre de todas las columnas que comienzan con una letra minúscula. Sin embargo, es frágil porque los cambios de nombre fallarán cuando existan dependencias forzadas (por ejemplo, objetos vinculados al esquema) y no manejará vistas, procesos. 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;

Le sugiero que use SSDT , que se incluye con Visual Studio 2019 (incluida la Community Edition gratuita). Cree un nuevo proyecto de base de datos de SQL Server, importe la base de datos existente, cambie el nombre de la columna con la opción Refactor-->Cambiar nombre y, a continuación, publique el proyecto en la base de datos de destino. Publicar ofrece la opción de aplicar los cambios inmediatamente y/o simplemente generar el script. La secuencia de comandos incluirá DDL para el cambio de nombre de la columna y cambiará el nombre de la columna en todos los objetos de referencia.

Si la columna tiene un alias con el nombre no deseado en vistas, procesos, etc., esos alias también deberán cambiarse.