sql >> Base de Datos >  >> RDS >> Sqlserver

Cambiar el nombre de una columna sin romper los scripts y los procedimientos almacenados

Bueno, hay un montón de herramientas de terceros que prometen este tipo de "cambio de nombre seguro", algunas gratis y otras no:

  • ApexSQL tiene una herramienta gratuita para eso, como MWillemse escribió en su respuesta,
  • RedGate tiene una herramienta comercial llamada SQLPrompt que también tienen una función de cambio de nombre seguro, sin embargo, está lejos de ser gratuito.
  • Microsoft tiene un complemento de Visual Studio llamado Herramientas de datos de SQL Server (o SSDT en la versión corta), como Dan Guzman escribió en su comentario.

Debo decir que nunca probé ninguna de estas herramientas específicas para esa tarea específica, pero tengo algo de experiencia con SSDT y algunos de los productos de RedGate y los considero muy buenas herramientas. No sé nada sobre ApexSQL.

Otra opción es intentar escribir el script sql usted mismo. Sin embargo, hay un par de cosas que debe tener en cuenta antes de comenzar:

  • ¿Se puede acceder a su tabla directamente desde fuera del servidor sql? Quiero decir, ¿es posible que algún software esté ejecutando una declaración SQL directamente en esa tabla? Si es así, puede romperlo cuando cambie el nombre de esa columna, y ninguna herramienta sql ayudará en esta situación.
  • ¿Son tan buenos tus conocimientos de secuencias de comandos SQL? Me considero bastante experimentado con el servidor sql, pero creo que escribir un script como ese está más allá de mis habilidades. No es que sea imposible para mí, pero probablemente tomará demasiado tiempo y esfuerzo para algo que pueda obtener de forma gratuita.

Si decide escribirlo usted mismo, hay algunos artículos que pueden ayudarlo en esa tarea:

Primero, la documentación oficial de Microsoft de sys.sql_expression_dependencies .
Segundo, un artículo llamado Diferentes formas de encontrar dependencias de objetos de SQL Server que está escrito por un DBA de 13 años de experiencia, y por último, pero no menos importante, una pregunta relacionada en el sitio web del administrador de la base de datos de StackExchange.

Por supuesto, podría optar por la forma segura que Gordon Linoff sugirió en su comentario, o usar sinónimos como datos de destino sugeridos en su respuesta, pero luego tendrá que modificar manualmente todas las dependencias de las columnas manualmente, y por lo que entiendo , eso es lo que quieres evitar.