Refatoração da estrutura do SQL Server

Refatoração da estrutura do SQL Server

Freqüentemente, em meu código c#, posso alterar o nome de uma variável e todas as referências a ela também serão alteradas.

Existe um recurso semelhante que me permite fazer isso com objetos em servidores SQL? Algumas de minhas tabelas, colunas e procedimentos armazenados precisam ser renomeados, mas é claro que quero manter tudo funcionando.

Responder1

P: Existem aplicativos e recursos para fazer isso?

Sim.

P: Você deve usá-los?

Provavelmente não. O problema com SQL é que é extraordinariamente difícil capturar todas as referências a nomes de objetos.

Um exemplo é o SQL dinâmico – a técnica de construir strings e, em seguida, executar a string como uma consulta. Meu procedimento armazenado pode ter um código como este:

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

Se você quiser renomear dbo.MyTableName como outra coisa, precisará examinar as strings dentro dos procedimentos armazenados e do código do aplicativo. Isso é realmente difícil de fazer porque também é 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;'

Isso cria duas consultas diferentes para dois MyTableNames diferentes em dois bancos de dados diferentes.

Outro exemplo são as consultas de servidores vinculados. Qualquer um dos seus outros SQL Servers pode ser configurado com servidores vinculados, sinônimos, visualizações, etc. para consultar seus objetos existentes.

Portanto, alterações de nomes de objetos e refatoração de tabelas são realmente algo que você só pode fazer quando:

  • Seu aplicativo é bastante jovem
  • Você tem um controle muito rígido sobre as consultas
  • Você sabe de todos os lugares de onde vêm as consultas

Responder2

Se você está falando sobre Linq to SQL e alterando as definições de objeto LINQ no visual studio, a maneira típica de atualizá-los é excluí-los e adicioná-los novamente no designer, encontrar suas referências e atualizá-los com os novos nomes. Se você usar DI e algo como o padrão de repositório, isso é muito fácil, pois as referências estão todas em uma área e não estão espalhadas por todo o código.

Responder3

Se você quiser comprar alguma coisa, parecePortão Vermelhotem algo certo para você.

Responder4

Eu aconselho você a tentarSQL completo Ele permite melhorar a legibilidade do código, fornecendo nomes significativos e autoexplicativos para tabelas, colunas, tabelas e colunas temporárias, visualizações, procedimentos armazenados e funções. SQL Complete corrigirá automaticamente todas as referências aos objetos renomeados.

Com a ajuda da funcionalidade de renomeação, você também pode alterar os nomes das variáveis ​​locais e SQLCMD em alguns segundos. Visualize as alterações de código em uma visualização em árvore conveniente da janela de diálogo Renomear.

informação relacionada