Recebi a tarefa de mover relatórios do SSRS para nosso aplicativo ASP.Net interno e isso me envolveu reescrever algumas funções e um procedimento armazenado para melhorar o desempenho, torná-los saída em formulários melhor consumidos pelo aplicativo e tornar quaisquer adições solicitadas aos relatórios.
O que eu também preciso fazer é remover as funções e procedimentos antigos do sistema à medida que vou, antes de fazer isso, embora eu queira ter certeza de que não quebrará mais nada. Existe uma maneira que eu possa passar por todas as precedências e funções para ver se alguma delas contém referências às que estarei removendo?
Existem milhares deles para ir embora e eu preferiria não ter que abrir cada um de cada vez no SSMS para olhar. Então, se houver alguma tabela que eu possa consultar ou mesmo se houver um arquivo .sql que o SQL Server está escondendo que eu possa cavar, isso seria ótimo.
sys.sql_expression_dependencies
deve fornecer o que você deseja se não quiser pesquisar a definição de cada objeto (especialmente quando as referências podem ou não ter prefixos de esquema).Acho que você pode obter o que deseja com a seguinte consulta:
Acesse o adorável
sys.sql_modules
DMV:Para verificar quaisquer referências de trabalho:
Você pode não pegar tudo, como referências de código de aplicativo em linha ou outras referências de pacote SSIS/SSRS, mas isso deve pelo menos remover os catálogos reais de suas preocupações.
Além disso, se for "uma dessas" funções, você também pode usar
sys.computed_columns
comosys.sql_modules
acima para encontrar quaisquer tabelas usando a função em questão como uma coluna computada.Isso parece funcionar muito bem.