J'ai créé une table sur l'environnement de développement à des fins de test et il y a peu de sp qui refreing cette table. Maintenant, je dois supprimer ce tableau et identifier tous les SP qui font référence à ce tableau. Je suis confronté à des difficultés pour trouver la liste de tous les sp. Veuillez suggérer une requête en supposant que le nom de la table est «x» et que la base de données est SQL Server 2005.
sql
tsql
sql-server-2005
DJay
la source
la source
Réponses:
BTW - voici une ressource pratique pour ce type de question: Interrogation de la FAQ du catalogue système SQL Server
la source
ROUTINE_DEFINITION
onINFORMATION_SCHEMA.ROUTINES
?set @Query = “SELECT * FROM Object_I_Need_To_Find_References…”;
Ce qui suit fonctionne sur SQL2008 et au-dessus. Fournit une liste des procédures stockées et des fonctions.
la source
Parfois, les requêtes ci-dessus ne donneront pas de résultat correct, il existe une procédure stockée intégrée disponible pour obtenir les dépendances de table comme:
la source
Une manière sans requête serait d'utiliser le Sql Server Management Studio.
Localisez la table, faites un clic droit et choisissez "Afficher les dépendances".
ÉDITER
Mais, comme l'ont dit les commentateurs, ce n'est pas très fiable.
la source
La requête suivante récupérera tous les noms de procédure stockée et la définition correspondante de ces SP
la source
Gardez simplement à l'esprit que cela affichera également les SP où le nom de la table se trouve dans les commentaires ou où le nom de la table est une sous-chaîne d'un autre nom de table utilisé. Par exemple, si vous avez des tables nommées "test" et "test_2" et que vous essayez de rechercher des SP avec "test", vous obtiendrez des résultats pour les deux.
la source
syscomments
de cette manière n'est pas fiable pour les procédures longues car elle divise la définition en blocs de 4 000 caractères sur plusieurs lignes.sys.sql_modules
évite cela.sys.sql_modules
place.La requête ci-dessous fonctionne uniquement lors de la recherche de dépendances sur une table et non sur celles d'une colonne:
Cependant, la requête suivante est la meilleure option si vous souhaitez rechercher toutes sortes de dépendances, elle ne manque rien. Il donne en fait plus d'informations que nécessaire.
la source
Cela fonctionnera si vous devez mentionner le nom de la table.
la source
Dans le studio de gestion, vous pouvez simplement cliquer avec le bouton droit sur le tableau et cliquer sur `` Afficher les dépendances ''
que vous pouvez voir une liste d'objets qui ont des dépendances avec votre table:
la source
Vous avez essentiellement 2 options:
----Option 1
----Option 2
Ces 2 requêtes vous permettront d'obtenir toutes les procédures stockées qui font référence à la table que vous désirez. Cette requête repose sur 2 tables sys qui sont des sysobjects et des syscomments. Le sysobjects est l'endroit où tous vos noms d'objet de base de données sont stockés, y compris les procédures stockées.
Les syscomments contiennent le texte de toutes vos procédures.
Si vous interrogez: SELECT * FROM syscomments
Vous aurez une table contenant l'id qui est le mappage à la table sysobjects avec le texte contenu dans les procédures stockées comme dernière colonne.
la source
Essaye ça
la source