Ich habe zu Testzwecken eine Tabelle zur Entwicklungsumgebung erstellt, und es gibt nur wenige SPs, die diese Tabelle referenzieren. Jetzt muss ich diese Tabelle löschen und alle SPs identifizieren, die auf diese Tabelle verweisen. Ich habe Schwierigkeiten, eine Liste aller SPs zu finden. Bitte schlagen Sie eine Abfrage vor, indem Sie davon ausgehen, dass der Tabellenname 'x' und die Datenbank SQL Server 2005 ist.
sql
tsql
sql-server-2005
DJay
quelle
quelle
Antworten:
Übrigens - hier ist eine praktische Ressource für diese Art von Fragen: Abfragen der häufig gestellten Fragen zum SQL Server-Systemkatalog
quelle
ROUTINE_DEFINITION
On zu tunINFORMATION_SCHEMA.ROUTINES
?set @Query = “SELECT * FROM Object_I_Need_To_Find_References…”;
Das Folgende funktioniert unter SQL2008 und höher. Bietet eine Liste der gespeicherten Prozeduren und Funktionen.
quelle
Manchmal liefern die obigen Abfragen kein korrektes Ergebnis. Es ist eine integrierte gespeicherte Prozedur verfügbar, um die Tabellenabhängigkeiten wie folgt abzurufen:
quelle
Eine nicht abfragbare Möglichkeit wäre die Verwendung von SQL Server Management Studio.
Suchen Sie die Tabelle, klicken Sie mit der rechten Maustaste und wählen Sie "Abhängigkeiten anzeigen".
BEARBEITEN
Aber wie die Kommentatoren sagten, ist es nicht sehr zuverlässig.
quelle
Die folgende Abfrage ruft alle Namen der gespeicherten Prozeduren und die entsprechende Definition dieser SPs ab
quelle
Denken Sie daran, dass dadurch auch SPs angezeigt werden, bei denen der Tabellenname in den Kommentaren steht oder bei denen der Tabellenname eine Teilzeichenfolge eines anderen verwendeten Tabellennamens ist. Wenn Sie beispielsweise Tabellen mit den Namen "test" und "test_2" haben und versuchen, mit "test" nach SPs zu suchen, erhalten Sie Ergebnisse für beide.
quelle
syscomments
auf diese Weise ist für lange Prozeduren nicht zuverlässig, da die Definition in 4000 Zeichenblöcke über mehrere Zeilen aufgeteilt wird.sys.sql_modules
vermeidet dies.sys.sql_modules
stattdessen zu verwenden .Die folgende Abfrage funktioniert nur bei der Suche nach Abhängigkeiten in einer Tabelle und nicht in einer Spalte:
Die folgende Abfrage ist jedoch die beste Option, wenn Sie nach allen Arten von Abhängigkeiten suchen möchten. Dabei wird nichts übersehen. Es gibt tatsächlich mehr Informationen als erforderlich.
quelle
Dies funktioniert, wenn Sie den Tabellennamen angeben müssen.
quelle
In Management Studio können Sie einfach mit der rechten Maustaste auf die Tabelle und dann auf "Abhängigkeiten anzeigen" klicken.
dann können Sie eine Liste von Objekten sehen, die Abhängigkeiten von Ihrer Tabelle haben:
quelle
Sie haben grundsätzlich 2 Möglichkeiten:
----Option 1
----Option 2
Mit diesen beiden Abfragen erhalten Sie alle gespeicherten Prozeduren, die auf die gewünschte Tabelle verweisen. Diese Abfrage basiert auf 2 sys-Tabellen, die sysobjects und syscomments sind. In den Sysobjekten werden alle Ihre DB-Objektnamen gespeichert, einschließlich der gespeicherten Prozeduren.
Das System enthält den Text für alle Ihre Verfahren.
Wenn Sie fragen : SELECT * FROM syscomments
Sie haben eine Tabelle mit der ID, die die Zuordnung zur sysobjects-Tabelle darstellt, wobei der in den gespeicherten Prozeduren enthaltene Text die letzte Spalte ist.
quelle
Versuche dies
quelle