Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Renomear uma coluna sem quebrar os scripts e procedimentos armazenados


Bem, existem várias ferramentas de terceiros que prometem esse tipo de "renomeação segura", algumas de graça e outras não:

Devo dizer que nunca experimentei nenhuma dessas ferramentas específicas para essa tarefa específica, mas tenho alguma experiência com SSDT e alguns produtos da RedGate e as considero ferramentas muito boas. Eu não sei nada sobre ApexSQL.

Outra opção é tentar escrever o script sql você mesmo, no entanto, há algumas coisas a serem levadas em consideração antes de começar:
  • Sua tabela pode ser acessada diretamente de fora do sql server? Quero dizer, é possível que algum software esteja executando a instrução sql diretamente nessa tabela? Nesse caso, você pode quebrá-lo ao renomear essa coluna e nenhuma ferramenta sql ajudará nessa situação.
  • Suas habilidades de script SQL são realmente boas? Eu me considero bastante experiente com sql server, mas acho que escrever um script como esse está além das minhas habilidades. Não que seja impossível para mim, mas provavelmente levará muito tempo e esforço para obter algo de graça.

Caso decida escrevê-lo você mesmo, existem alguns artigos que podem ajudá-lo nessa tarefa:

Primeiro, a documentação oficial da Microsoft de sys.sql_expression_dependencies .
Segundo, um artigo chamado Diferentes maneiras de encontrar dependências de objetos do SQL Server escrito por um DBA de 13 anos de experiência e, por último, mas não menos importante, uma pergunta relacionada no site do administrador de banco de dados do StackExchange.

Você poderia, é claro, seguir o caminho seguro que Gordon Linoff sugeriu em seu comentário ou usar sinônimos como dados de destino sugeridos em sua resposta, mas então você terá que modificar manualmente todas as dependências de colunas manualmente e, pelo que entendi , é isso que você quer evitar.