Refactorización de la estructura del servidor SQL

Refactorización de la estructura del servidor SQL

A menudo, en mi código C#, puedo cambiar el nombre de una variable y todas las referencias a ella también cambiarán.

¿Existe una característica similar que me permita hacer esto con objetos en servidores SQL? Es necesario cambiar el nombre de algunas de mis tablas, columnas y procedimientos almacenados, pero, por supuesto, quiero que todo siga funcionando.

Respuesta1

P: ¿Existen aplicaciones y funciones para hacer esto?

Sí.

P: ¿Deberías usarlos?

Probablemente no. El problema con SQL es que es extraordinariamente difícil captar todas las referencias a nombres de objetos.

Un ejemplo es el SQL dinámico: la técnica de crear cadenas y luego ejecutarlas como una consulta. Mi procedimiento almacenado podría tener un código como este:

DECLARE @StringToExecute
SET @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
EXEC (@StringToExecute);

Si desea cambiar el nombre de dbo.MyTableName a otra cosa, tendrá que mirar las cadenas dentro de los procedimientos almacenados y el código de la aplicación. Eso es realmente difícil de hacer porque esto también es válido:

DECLARE @StringToExecute
SET @StringToExecute = 'USE Database1;'
SET @StringToExecute = @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
EXEC (@StringToExecute);
SET @StringToExecute = 'USE Database2;'
SET @StringToExecute = @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'

Eso genera dos consultas diferentes para dos MyTableName diferentes en dos bases de datos diferentes.

Otro ejemplo son las consultas de servidores vinculados. Cualquiera de sus otros servidores SQL puede configurarse con servidores vinculados, sinónimos, vistas, etc. para consultar sus objetos existentes.

Entonces, los cambios de nombre de objeto y la refactorización de tablas son realmente algo que solo puedes hacer cuando:

  • Tu aplicación es bastante joven.
  • Tienes un control muy estricto sobre las consultas.
  • Sabes de todos lados de dónde vienen las consultas.

Respuesta2

Si está hablando de Linq to SQL y de cambiar las definiciones de objetos LINQ en Visual Studio, entonces la forma típica de actualizarlas es eliminarlas y volver a agregarlas en el diseñador, luego buscar sus referencias y actualizarlas con los nuevos nombres. Si usa DI y algo como el patrón de repositorio, esto es bastante fácil ya que todas las referencias están en un área y no se distribuyen por todo el código.

Respuesta3

Si quieres comprar algo, parecepuerta rojatiene algo ideal para ti.

Respuesta4

te aconsejo que pruebesSQL completo Le permite mejorar la legibilidad del código dando nombres significativos y autoexplicativos a tablas, columnas, tablas y columnas temporales, vistas, procedimientos almacenados y funciones. SQL Complete corregirá automáticamente todas las referencias a los objetos renombrados.

Con la ayuda del cambio de nombre funcional, también puede cambiar los nombres de las variables locales y SQLCMD en un par de segundos. Obtenga una vista previa de los cambios de código en una conveniente vista de árbol de la ventana de diálogo Cambiar nombre.

información relacionada