5

Ich arbeite an einer Reihe von sehr komplizierte gespeicherte Prozeduren in SQLSERVER 2012 Express-Datenbanken mit SQLSEVER 2012 Management Studio.SQL Server-Ansicht Gespeicherte Prozeduren vollständige Beziehungen

Zum Beispiel habe ich eine gespeicherte SP1 Prozedur eine andere gespeicherte Prozedur SP2 Aufruf und SP2 ruft SP3 SP3 ruft SP4 ...

Was ich möchte, ist ein Diagramm, um zu sehen, die mir die vollen Beziehungen zwischen diesen zur Verfügung stellen kann gespeicherte Prozeduren und alle Tabellen, die in diesen gespeicherten Prozeduren verwendet werden.

Ich habe versucht, die Ansicht Abhängigkeiten Tools von SQL Server-Management-Studio zur Verfügung gestellt, aber manchmal fehlt Nachkommen gespeicherten Prozeduren, wenn ich auf "Abhängigkeiten anzeigen" einer ausgewählten gespeicherten Prozedur klicken. Es kann auch kein vollständiges Bild der Beziehungen zwischen diesen gespeicherten Prozeduren anzeigen.

Kann mir irgendein Werkzeug dabei helfen? Oder irgendwelche Vorschläge, wie man komplizierte gespeicherte Beziehungsprozeduren versteht?

+2

gespeichert Procs Verschachtelung wie dies ist ein Albtraum zu dokumentieren. Es ist wirklich kein großartiges Werkzeug dafür, weil es Rekursion beinhaltet. Sie müssen die Abhängigkeiten jedes abhängigen Objekts anzeigen. –

+1

Haben Sie Redgate versucht? – mhan0125

+1

@SeanLange Aber eins nach dem anderen braucht zu viel Zeit und ich bin neu in diesem Projekt, jede Erfahrung, wie man die Dinge beschleunigen kann? – lengsiqi

Antwort

1

Ich fand folgende Abfrage recht nützlich, hoffe, es kann helfen.

select  
     distinct 
     ObjJectType= 
     case Obj.xType 
     When 'V' then 
      'VIEW' 
     When 'P' then 
      'PROC' 
     When 'D' then 
      'INDEX' 
     When 'TF' then 
      'TABLE FUNCTION' 
     When 'FN' then 
      'FUNCTION' 
     When 'U' then 
      'TABLE' 
     When 'F' then 
      'FK CONSTRAINT' 
     When 'PK' then 
      'PK CONSTRAINT' 
     When 'TR' then 
      'TRIGGER' 
     When 'S' then 
      'SYSTEM OBJECT' 
     end , 
     Obj.name 
from 
     syscomments Com inner join sysobjects Obj 
    on Com.id = Obj.id 
where 
     Com.text like '%sp_name%' 
order by Obj.name 
1

Sie können eine rekursive Abfrage um sys.objects erstellen, die auf sys.sql_modules verbunden ist (das Definitionsfeld enthält den Sproc-Code) und selbst einen Abhängigkeitenbaum erstellen.

+1

Aber es wird schwer sein zu entscheiden, ob ein SP innerhalb eines Kommentars ist oder wirklich aufgerufen wird, wenn ich den SP-Code direkt abfrage. – lengsiqi

+0

@ Lengsiqi Sie haben Recht. Kommentarbearbeitung erschwert den Code. – Ilan

+0

Ich stimme zu, dass dies der Weg wäre, ohne eine Art von Drittanbieter-Tool zu gehen. –