Wie scribiere ich gespeicherte Prozeduren in Dateien?

7

Gibt es eine Möglichkeit, wo gespeicherte Prozeduren gespeichert werden, sodass ich die Dateien einfach auf meinen Desktop kopieren kann?

    
Hotlansy Httlandy 14.08.2013, 19:06
quelle

3 Antworten

28

Gespeicherte Prozeduren werden nicht als Dateien gespeichert, sie werden als Metadaten gespeichert und uns Peons zur Verfügung gestellt (Danke Michael für die Erinnerung an sysschobjs ) in den Katalogansichten sys.objects sys.procedures , sys.sql_modules usw. Für eine einzelne gespeicherte Prozedur können Sie die Definition direkt mit diesen Sichten abfragen (am wichtigsten sys.sql_modules.definition ) oder die OBJECT_DEFINITION() funktioniert als (obwohl seine Beschreibung von syscomments ist nicht ganz korrekt).

Um alle gespeicherten Prozeduren in eine einzige Datei zu extrahieren, wäre eine Option, den Objekt-Explorer zu öffnen, your server > databases > your database > programmability zu erweitern und den Knoten stored procedures hervorzuheben. Dann drücke F7 (View Details zum Objekt-Explorer ). Wählen Sie auf der rechten Seite alle gewünschten Prozeduren aus und klicken Sie mit der rechten Maustaste auf script stored procedure as > create to > file . Dadurch wird eine einzelne Datei mit allen von Ihnen ausgewählten Prozeduren erstellt. Wenn Sie für jede Prozedur eine einzige Datei wünschen, können Sie diese Methode verwenden, indem Sie nur jeweils eine Prozedur auswählen. Dies könnte jedoch mühsam sein. Sie können diese Methode auch verwenden, um alle rechnungslegungsbezogenen Prozeduren in eine Datei zu schreiben, alle finanzbezogenen Prozeduren in eine andere Datei usw.

Eine einfachere Methode, um genau eine Datei pro gespeicherter Prozedur zu erstellen, wäre die Verwendung des Skript generieren-Assistenten - Klicken Sie erneut im Objekt-Explorer mit der rechten Maustaste auf Ihre Datenbank und wählen Sie Tasks > Generate scripts . Wählen Sie Select specific database objects und überprüfen Sie die oberste Ebene Stored Procedures . Weiter klicken. Für die Ausgabe wählen Sie Save scripts to a specific location , Save to file und Single file per object.

Diese Schritte können je nach Ihrer Version von SSMS leicht abweichen.

    
Aaron Bertrand 14.08.2013, 19:15
quelle
4

Gespeicherte Prozeduren werden nicht als separate Datei "gespeichert", die Sie ohne die Datenbank durchsuchen und lesen können. Es ist in der Datenbank gespeichert, zu der es in einer Reihe von Systemtabellen gehört. Die Tabelle, die die Definition enthält, heißt [sysschobjs] und ist für einen Endnutzer nicht einmal (direkt) zugänglich.

Um die Definition dieser gespeicherten Prozeduren aus der Datenbank abzurufen, verwende ich gerne diese Abfrage:

%Vor%

Aber ich mag Aarons Antwort. Er gibt einige andere nette Optionen.

    
Michael J Swart 14.08.2013 19:16
quelle
1

Das hängt davon ab, welche Version von SQL Server Sie ausführen. Bei neueren Versionen ist der Quellcode für gespeicherte Prozeduren über die Systemansicht sys.sql_modules verfügbar. Eine einfachere Methode zum Abrufen der Quelle für eine gespeicherte Prozedur oder eine benutzerdefinierte Funktion (UDF) ist jedoch die Systemfunktion object_definition() Ansichtsdefinition von sys.ssql_modules verwendet):

%Vor%

In älteren Versionen war die Stored Procedure und UDF über die jetzt veraltete Systemansicht view sys.syscomments verfügbar.

Und in älteren Versionen von SQL Server war es über die Systemtabelle 'dbo.syscomments'

verfügbar

Es sollte darauf hingewiesen werden, dass die Quelle je nach Ihrem Zugriff und der Konfiguration der Datenbank möglicherweise nicht für Sie verfügbar ist oder dass sie verschlüsselt ist, was sie nicht besonders nützlich macht.

Sie können die Quelle auch programmgesteuert mithilfe von SMO (Sql Server Management Objects) abrufen. Ссылка

    
Nicholas Carey 14.08.2013 19:16
quelle

Tags und Links