Liste der gespeicherten Prozeduren aus der Tabelle

7

Ich habe eine riesige Datenbank mit 100 Tabellen und gespeicherten Prozeduren. Wie kann ich mithilfe von SQL Server 2005 eine Liste gespeicherter Prozeduren abrufen, die eine Einfüge- oder Aktualisierungsoperation für eine bestimmte Tabelle ausführen.

    
Vinod 23.09.2008, 07:52
quelle

7 Antworten

10
%Vor%

Dies wird Ihnen eine Liste aller Inhalte der gespeicherten Prozedur mit INSERT oder UPDATE in ihnen für eine bestimmte Tabelle geben (Sie können natürlich die Abfrage anpassen). Auch längere Prozeduren werden über mehrere Zeilen in dem zurückgegebenen Re-Cord-Set unterbrochen, so müssen Sie möglicherweise ein manuelles Durchsuchen der Ergebnisse manuell durchführen.

Bearbeiten : Die Abfrage wurde optimiert, um auch den SP-Namen zurückzugeben. Beachten Sie außerdem, dass die obige Abfrage alle benutzerdefinierten Funktionen sowie SPs zurückgibt.

    
Luke Bennett 23.09.2008, 08:02
quelle
14

sys.sql_dependencies enthält eine Liste von Entitäten mit Abhängigkeiten, einschließlich Tabellen und Spalten, die ein Sproc in Abfragen enthält. In diesem Post finden Sie ein Beispiel für eine Abfrage, die Abhängigkeiten abruft. Das Code-Snippet unten erhält eine Liste der Tabellen- / Spaltenabhängigkeiten nach Stored Procedure

%Vor%     
quelle
2

Verwenden Sie sys.dm_sql_referencing_entities

Beachten Sie, dass sp_depends veraltet ist.

MSDN-Referenz

    
Gareth D 23.09.2008 08:01
quelle
1

Sie könnten versuchen, alle gespeicherten Prozeduren in eine Textdatei zu exportieren und dann eine einfache Suche zu verwenden.

Eine fortgeschrittenere Technik wäre, eine regexp-Suche zu verwenden, um alle SELECT FROM- und INSERT FROM-Einträge zu finden.

    
Ilya Kochetov 23.09.2008 07:56
quelle
1

Das scheint zu funktionieren:

select
so.name as [proc],
so2.name as [table],
sd.is_updated
from sysobjects so
inner join sys.sql_dependencies sd on so.id = sd.object_id
inner join sysobjects so2 on sd.referenced_major_id = so2.id
where so.xtype = 'p' -- procedure
and is_updated = 1 -- proc updates table, or at least, I think that's what this means

    
Corey Trager 23.09.2008 08:08
quelle
1

Wenn Sie sp_search_code von Vyaskn's Website herunterladen, können Sie beliebigen Text in Ihren Datenbankobjekten finden.

Ссылка

    
Michael Prewecki 23.09.2008 09:48
quelle
0
%Vor%

Dieser Link wurde als Ressource für die SP-Suche verwendet.

    
Matt Mitchell 23.09.2008 08:00
quelle