Welche Abfrage kann die Namen aller gespeicherten Prozeduren in einer SQL Server-Datenbank zurückgeben
Wenn die Abfrage gespeicherte Systemprozeduren ausschließen könnte, wäre dies noch hilfreicher.
sql-server
tsql
p.campbell
quelle
quelle
quelle
dbo.sys*
Ansichten entfernen . Diese Abfrage: filtert gespeicherte CLR-Prozeduren heraus, filtert gespeicherte Systemprozesse nicht heraus und gibt [Typ] zurück, wenn bekannt ist, dass [Typ] immer 'P' ist, da dies die WHERE-Bedingung ist.Nach meinem Verständnis besteht die "bevorzugte" Methode darin, die Tabellen information_schema zu verwenden:
quelle
Im Folgenden werden alle Prozeduren in der ausgewählten Datenbank zurückgegeben
quelle
Sie können diese Abfrage versuchen, um gespeicherte Prozeduren und Funktionen abzurufen:
quelle
Wenn Sie SQL Server 2005 verwenden, funktioniert Folgendes:
quelle
Sie können eine der folgenden Abfragen verwenden, um die Liste der gespeicherten Prozeduren in einer Datenbank zu finden:
Abfrage1:
Abfrage2:
Wenn Sie die Liste aller SPs in allen Datenbanken finden möchten, können Sie die folgende Abfrage verwenden:
quelle
Wählen Sie Alle gespeicherten Prozeduren und Ansichten aus
quelle
Dies kann auch dazu beitragen, Prozeduren mit Ausnahme der Systemprozeduren aufzulisten:
quelle
sys.all_objects
da Sie weiter filternis_ms_shipped=0
. Es kann DDL-Trigger enthalten, die jedoch von herausgefiltert werdentype='p'
. Sie könnten genauso gut verwendensys.objects
.INFORMATION_SCHEMA
Enthält leider keine Informationen zu den Systemprozessen.quelle
sys.procedures where is_ms_shipped = 0
? Und warum sollten Sieobjectproperty(object_id, N'IsMSShipped')
für jede Zeile eine Funktion ausführen, wenn es ein Feld gibtis_ms_shipped
, das diesen Wert enthält? Warum sollte diese Funktion in diesem Sinne erneut ausgeführt werden, wenn[type] IN ('P', 'PC')
dasselbe funktioniert ? Diese Methode ist unnötig kompliziert und ineffizient.Nur die Namen:
quelle
Ich habe den hervorragenden Beitrag von LostCajun oben optimiert, um gespeicherte Systemprozeduren auszuschließen. Ich habe auch "Extrahieren" entfernt. aus dem Code, weil ich nicht herausfinden konnte, wofür es ist und es mir Fehler gab. Die Anweisung "fetch next" in der Schleife benötigte ebenfalls eine "into" -Klausel.
quelle
Der beste Weg, um Objekte zu erhalten, ist die Verwendung von sys.sql_modules. Sie können alles, was Sie wollen, aus dieser Tabelle finden und diese Tabelle mit einer anderen Tabelle verbinden, um weitere Informationen über object_id zu erhalten
quelle
quelle
dbo.sys*
Ansichten entfernen . Diese Abfrage filtert auch gespeicherte CLR-Prozeduren heraus.Ich habe diese einfache tsql geschrieben, um den Text aller gespeicherten Prozeduren aufzulisten. Stellen Sie sicher, dass Sie Ihren Datenbanknamen im Feld ersetzen.
quelle
Dies gibt nur die Namen der gespeicherten Prozeduren an.
quelle
Dies zeigt alle gespeicherten Prozeduren und den Code:
quelle
Listen Sie hier alle gewünschten Dinge auf
In SQL Server 2005, 2008, 2012:
ODER
quelle
sp_tables
. Außerdem ist "PROCEDURE" keine gültige Option fürsp_tables
. Die einzigen Optionen für@table_type
sind: 'SYSTEM TABLE', 'TABLE' und 'VIEW'.Dies gibt alle SP-Namen zurück
quelle
[type]
sollte sein[type] IN ('P', 'PC')
, dass Sie alle CLR-gespeicherten Prozesse herausfiltern, die möglicherweise vorhanden sind.Versuchen Sie diesen Codeplex-Link, dieses Hilfsprogramm, um alle gespeicherten Prozeduren aus der SQL-Datenbank zu lokalisieren.
https://exportmssqlproc.codeplex.com/
quelle
quelle
Dies wird auf mssql funktionieren.
quelle
Wählen Sie eine Liste der gespeicherten Prozeduren in SQL Server aus. Weitere Informationen finden Sie hier: https://coderrooms.blogspot.com/2017/06/select-list-of-stored-procedure-in-sql.html
quelle
PaymentDetails
Tabelle zurückgibt . Das OP möchte eine Liste der tatsächlich gespeicherten Prozeduren.