Eu criei uma tabela no ambiente de desenvolvimento para fins de teste e existem alguns sps que estão refreing esta tabela. Agora eu tenho que descartar esta tabela e identificar todos os sps que estão se referindo a esta tabela. Estou enfrentando dificuldades para encontrar a lista de todos os sps. Por favor, sugira alguma consulta assumindo que o nome da tabela seja 'x' e o banco de dados seja sql server 2005.
sql
tsql
sql-server-2005
DJay
fonte
fonte
Respostas:
Entre - aqui está um recurso útil para esse tipo de pergunta: Consultando as Perguntas frequentes sobre o catálogo de sistemas do SQL Server
fonte
ROUTINE_DEFINITION
onINFORMATION_SCHEMA.ROUTINES
?set @Query = “SELECT * FROM Object_I_Need_To_Find_References…”;
O seguinte funciona no SQL2008 e acima. Fornece uma lista de procedimentos e funções armazenados.
fonte
às vezes, as consultas acima não dão o resultado correto, existe um procedimento armazenado interno disponível para obter as dependências da tabela como:
fonte
Uma maneira sem consulta seria usar o Sql Server Management Studio.
Localize a tabela, clique com o botão direito e escolha "Exibir dependências".
EDITAR
Mas, como disseram os comentaristas, não é muito confiável.
fonte
A consulta a seguir buscará todos os nomes de procedimentos armazenados e a definição correspondente desses SPs
fonte
Lembre-se de que isso também aumentará os SPs nos quais o nome da tabela está nos comentários ou em que o nome da tabela é uma substring de outro nome da tabela que está sendo usado. Por exemplo, se você tiver tabelas nomeadas "test" e "test_2" e tentar procurar SPs com "test", obterá resultados para ambos.
fonte
syscomments
dessa maneira não é confiável para procedimentos longos, pois divide a definição em pedaços de 4000 caracteres em várias linhas.sys.sql_modules
evita isso.sys.sql_modules
lugar.A consulta abaixo funciona apenas ao procurar dependências em uma tabela e não em uma coluna:
No entanto, a consulta a seguir é a melhor opção, se você deseja procurar todos os tipos de dependências, ela não perde nada. Na verdade, fornece mais informações do que o necessário.
fonte
Isso funcionará se você precisar mencionar o nome da tabela.
fonte
No estúdio de gerenciamento, você pode clicar com o botão direito do mouse na tabela e clicar em 'Exibir dependências'
do que você pode ver uma lista de objetos que possuem dependências com sua tabela:
fonte
Você tem basicamente 2 opções:
----Opção 1
----Opção 2
Essas 2 consultas fornecerão todos os procedimentos armazenados que se referem à tabela que você deseja. Esta consulta baseia-se em 2 tabelas sys que são sysobjects e syscomments. O sysobjects é onde todos os nomes de objetos do banco de dados são armazenados, incluindo os procedimentos armazenados.
Os syscomments contêm o texto para todos os seus procedimentos.
Se você consultar: SELECT * FROM syscomments
Você terá uma tabela contendo o ID, que é o mapeamento para a tabela sysobjects, com o texto contido nos procedimentos armazenados como a última coluna.
fonte
Experimente isto
fonte