Modifiquei uma tabela central no meu banco de dados e sp_depends literalmente retorna centenas de resultados, e estou preocupado que alguns desses procedimentos armazenados possam não ser mais compilados após minha alteração.
É fácil verificar um único procedimento armazenado (basta executar novamente o script de alteração e verificar se a operação foi bem-sucedida), mas fazer isso em mais de 100 procedimentos é um pouco complicado.
Eu sei que posso usar um script como este para recompilar todos os objetos do meu banco de dados, mas a operação real ocorrerá na próxima vez que o procedimento armazenado for executado, não imediatamente, para que isso não pareça apropriado no meu caso.
Eu também estava pensando que poderia descartar todos os procedimentos armazenados e ressignificar meu banco de dados com meu sistema de controle de origem, mas essa opção, embora viável, não é muito elegante. Existe um jeito melhor de fazer isso?
Estou usando o SQLServer 2008 R2 e meus scripts de banco de dados são armazenados em um projeto de banco de dados do VS 2008.
Para esclarecer, não estou defendendo que se deva confiar apenas nessa abordagem para testar o código. Assim como no c #, você detecta instantaneamente erros de sintaxe em outros arquivos dependentes à medida que codifica (e depois usa outras estratégias para testar, como testes de unidade, que geralmente são várias ordens de magnitude mais lentas), acho que faria sentido detectar dependências SQL erros em segundos, em vez de ter que executar um teste funcional completo, que normalmente pode levar algumas horas para ser concluído.
É uma solução alternativa, mas você pode gerar os scripts CREATE PROCEDURE para o banco de dados (clique com o botão direito do mouse em banco de dados -> tarefas -> gerar scripts), localize e substitua CREATE PROCEDURE por ALTER PROCEDURE e, em seguida, analise.
Espero que você obtenha uma resposta melhor aqui - também estou interessado! :)
fonte
Você pode usar o SSDT (Sql Server Data Tools). O Microsoft Visual Studio permite criar um projeto do Sql Server. Um então importa o banco de dados para o projeto e, em seguida, cria o projeto. Se houver procedimentos ou objetos armazenados quebrados, você receberá um erro de compilação.
fonte
Você pode querer olhar para esta pergunta de SO . Estou procurando uma maneira confiável de verificar os procedimentos armazenados do T-SQL. Alguém tem um? que está perguntando essencialmente a mesma coisa, com várias respostas.
Para criar o script que Alaa Awad postou ... isso deve mostrar o esquema e o banco de dados dos objetos referenciados e referenciados. Se você estiver usando muitas tabelas temporárias por meio de aliases (que às vezes são exibidos ao usar
sys.sql_expression_dependencies
), parâmetros UDTT ou outros recursos dinâmicos, pode ser necessário usar as funçõessys.dm_sql_referenced_entities
ou, emsys.dm_sql_referencing_entities
vez disso / também.fonte
use os sys.sql_expression_dependencies adicionados no sql server 2008
fonte