2016-03-22 15 views
1

Ich benutze Microsoft SQL Server. Ich habe eine Datenbank mit Hunderten gespeicherter Prozeduren. Um die Abhängigkeiten zu finden, kann ich mit der rechten Maustaste auf den SP klicken, Abhängigkeiten auswählen und auf objects that depend on [name] klicken.Finden Sie Objekte, die auf einem sp

Ich habe diese Abfrage alle gespeicherten Procs

select * from INFORMATION_SCHEMA.ROUTINES where ROUTINE_TYPE = 'procedure' 

und zu finden, wenn ich das hinzufügen, schließe ich jedes einzelne System SP.

and LEFT(routine_name, 3) not in ('sp_','xp_','ms_')` 

Ich möchte alle SPs finden, von denen kein anderer proc/function/trigger abhängt.
Beispiel: Ich habe sproc1. In der rechten Maustaste + Ansicht Abhängigkeiten habe ich unter objects that depend on [sproc1] keine Elemente, was bedeutet, dass nichts von diesem SP abhängt.

Die Verwendung einer Abfrage zum Auffinden von Procs, die ein Jahr oder länger unverändert waren, ist keine Option, da einige Operationen jedes Schaltjahr ausführen. Gibt es eine Möglichkeit, eine Abfrage zu schreiben, um den Namen der gespeicherten proc und schema_id nur für die gespeicherten Procs zu bestimmen, von denen NOONE abhängen? (Mit Null-Objekte, die auf abhängen [this_sp])

Antwort

0

Sie Liste ändern können Objekte unter gesucht:

SELECT * 
FROM sys.objects o 
WHERE NOT EXISTS 
(
    SELECT * 
    FROM sys.sql_expression_dependencies e 
    WHERE e.referenced_id = o.object_id 
) 
AND o.type IN (N'V', N'P', N'TF', N'IF', N'FN') 
Verwandte Themen