Exportieren Sie die gespeicherte SQL-Prozedur in eine Datei und generieren Sie ihr Skript

In früheren Artikeln haben wir einen allgemeinen Algorithmus zum Suchen und Löschen unvollständiger offener Transaktionen in SQL Server-Datenbanken überprüft, eine Tabelle zum Beheben unvollständiger Transaktionen und eine CRUD-gespeicherte Prozedur erstellt und zahlreiche Einstellungen implementiert, die unseren Dokumentenworkflow produktiv und praktisch machen.

Lassen Sie uns nun eine gespeicherte Prozedur exportieren und testen, ihren Code generieren und in ein Skript umwandeln – es wird auf jedem Host oder einer Gruppe von Hosts ausgeführt, indem die richtigen Eingabeparameter angegeben werden.

Gespeicherte Prozedur in SQL Server exportieren

Es kann auch sehr nützlich sein, ein Skript zum Erstellen der erforderlichen Datenbankobjekte zu generieren, z. B. ein Skript zum Exportieren einer gespeicherten Prozedur in eine Datei zu generieren oder die gespeicherte Prozedur in andere Lösungen zu kopieren. Führen Sie dazu die folgenden Schritte aus:

  • Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Ihre Datenbank
  • Wählen Sie Aufgaben aus dem angezeigten Kontextmenü
  • Wählen Sie den Befehl Skripte generieren
 Auswahl des Befehls Skripte generieren
Abb. 1 Auswählen des Befehls Skripte generieren
  • Wählen Sie die zu skriptenden Objekte aus
 Auswählen der Objekte, die Sie skripten möchten
Abb. 2 Auswahl der Objekte, die Sie skripten möchten
  • Wählen Sie im Fenster Set Scripting Options die Option Script to File aus
 Auswählen von Skript in Datei
Abb. 3. Skript zur Datei auswählen
  • Führen Sie das generierte Skript für die Zieldatenbank aus.

Wenn alle diese Schritte ausgeführt werden, erhalten wir ein generiertes Skript der exportierten gespeicherten Prozedur.

Testen einer gespeicherten Prozedur

Kehren wir zu einer gespeicherten Prozedur zurück, die wir in Teil 2 erstellt haben. Wenn wir den Cursor auf eine gespeicherte Prozedur ziehen, wird ein Dropdown-Menü angezeigt:

 Das Dropdown-Menü gespeicherte Prozedur
Abb. 4. Das Dropdown-Menü gespeicherte Prozedur

Damit Ihre gespeicherte Prozedur ordnungsgemäß funktioniert, sollte sie eine Beschreibung haben. Wenn es noch nicht hinzugefügt wurde, führen Sie bitte das folgende Skript aus:

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Identification of frozen transactions (forgotten ones that do not have active requests) with their subsequent removal' , @level0type=N'SCHEMA',@level0name=N'srv', @level1type=N'PROCEDURE',@level1name=N'AutoKillSessionTranBegin'
GO

Oder gehen Sie zu den erweiterten Eigenschaften des Objekts:

Hinzufügen der Beschreibung der gespeicherten Prozedur
Abb.5 Hinzufügen der Beschreibung der gespeicherten Prozedur

Mit dieser Methode können Sie auch eine Beschreibung hinzufügen.

Codegenerierung der gespeicherten Prozedur

Sie können es mit einem Rechtsklick auf das Dropdown-Menü einer gespeicherten Prozedur aufrufen und dann „Skriptobjekt als ERSTELLEN / ÄNDERN“ auswählen“:

 Auswahl der
Abb.6 Auswahl des „Script Object as CREATE/ALTER“ im Kontextmenü

Sobald Sie dies tun, erscheint ein Skript für die Objektänderung – in unserem Fall ist es die Änderung der gespeicherten Prozedur. Wenn es kein Objekt gibt, gibt es ein Skript zum Erstellen. Dieses Skript kann leicht in die richtigen MS SQL Server-Instanzen verschoben werden.

Gespeicherten Prozedurcode in ein Skript umwandeln

Sie können „EXEC in Skript konvertieren“ in einem Dropdown-Menü auswählen:

 Auswahl der
Abb.7 Auswahl des Befehls „Convert EXEC to Script“ im SQL Complete-Hauptmenü

Anstatt eine gespeicherte Prozedur aufzurufen, wird ein Skript erstellt, Eingabeparameter werden zu Variablen und der Inhalt der gespeicherten Prozedur wird zu einem Skript. Es ist eine praktische Funktion beim Testen Ihres Codes:

 Das Ergebnis der Erstellung eines Skripts aus einer gespeicherten Prozedur
Abb.8 Das Ergebnis der Erstellung eines Skripts aus einer gespeicherten Prozedur

Jetzt können Sie das abgeleitete Skript auf einem beliebigen Host oder einer Gruppe von Hosts ausführen, indem Sie die richtigen Werte für die Eingabeparameter festlegen.

Abfrageerstellungsverlauf

Lassen Sie uns nun eine weitere wichtige Funktionalität überprüfen – SQL Complete: Ausführungsverlauf, der die vorherigen Abfragen anzeigt. Klicken Sie dazu auf die Schaltfläche SQL Complete: Execution History:

 Auswahl der
Abb.9 Wenn Sie im SQL Complete-Hauptmenü

den Befehl „Ausführungsverlauf“ auswählen, wird folgendes Fenster angezeigt:

 Die Anzeige der ausgeführten Skripte
Abb.10 Die Anzeige der ausgeführten Skripte

Die obere linke Ecke des Fensters enthält Filter für Wörter und Zeitbereich, während die rechte Ecke die Anzahl der Abfragen anzeigt, die basierend auf den in den Filter eingegebenen Daten gefunden wurden. Die untere Seite des Fensters zeigt die aus der Tabelle ausgewählte Abfrage an.

Die Tabelle besteht aus folgenden Spalten:

  1. Status – zeigt an, ob eine Abfrage erfolgreich abgeschlossen wurde (weißes Häkchen in einem grünen Kreis) oder nicht (weißes Kreuz in einem roten Kreis)
  2. QueryText – zeigt den Abfragetext an
  3. Größe (Byte) – zeigt die in Byte gemessene Größe an
  4. Ausführung ein – zeigt Datum und Uhrzeit der Ausführung einer Abfrage an
  5. Dauer – die Zeit, die eine Abfrage benötigt hat, um ausgeführt zu werden
  6. Datei – zeigt den Namen der Datei und einen vollständigen Pfad dazu an
  7. Server – zeigt den Namen des Servers an
  8. Benutzer – zeigt einen Benutzer an, der ein Skript ausgeführt hat
  9. Datenbank – datenbank, in der ein Skript ausgeführt wurde

Die Suche nach den Spalten „QueryText“ und „Execution On“ erfolgt in den Filtern „Search“ und „From/To“.

Sie können Datenspalten auch in aufsteigender oder absteigender Reihenfolge sortieren, indem Sie auf eine Kopfzeile einer richtigen Spalte klicken. Standardmäßig ist die Spaltensortierung „Ausführung am“ in absteigender Reihenfolge aktiviert.

Sie können mehrere Spalten gleichzeitig sortieren, indem Sie die Umschalttaste gedrückt halten. Sie können auch komplexere Filter einrichten, indem Sie auf das Filterzeichen klicken:

 Einrichten der Spaltenfilterung
Abb.11 Einrichten der Spaltenfilterung

Geben wir nun den Namen unserer gespeicherten Prozedur „AutoKillSessionTranBegin“ in den Filter „Suchen“ ein:

 Gespeicherte Prozedur Suche in der
Abb.12 Suche nach gespeicherten Prozeduren auf der Registerkarte „Ausführungsverlauf“

Als Ergebnis erhalten wir eine vollständige Erstellungshistorie des srv.AutoKillSessionTranBegin Verfahren, das zuvor beschrieben wurde.

Wenn Sie mit der rechten Maustaste auf eine richtige Tabellenzeile klicken, können Sie ein Skript in einem neuen Fenster öffnen oder es in die Zwischenablage kopieren, um es bei Bedarf einzufügen:

Kopieren des ausgewählten Skripts aus dem
Abb.13 Kopieren des ausgewählten Skripts aus der Registerkarte „Ausführungshistorie“

Sie können ein Skript in einem neuen Fenster öffnen, indem Sie auf das gewünschte Skript in einer Tabellenzeile doppelklicken.

Sie können auch angeben, wie lange der Ausführungsverlauf gespeichert wird, die maximale Abfragegröße und den Verlaufsspeicherpfad:

 Die
Abb.14. Die Befehlseinstellungen „Ausführungsverlauf“ in SQL Complete

Weitere Details zur Funktionalität des Ausführungsverlaufs finden Sie hier.

Das ist alles, Leute. Die neue Funktionalität wurde entwickelt, getestet und auf geeignete MS SQL Server-Instanzen verschoben.

  • Autor
  • Neueste Beiträge
 Evgeniy Gribkov

Evgeniy Gribkov

Evgeniy ist ein MS SQL Server Datenbankanalyst, Entwickler und Administrator. Er ist an der Entwicklung und dem Testen der SQL Server-Datenbankverwaltungstools beteiligt. Evgeniy schreibt auch SQL Server-bezogene Artikel.

 Evgeniy Gribkov

Neueste Beiträge von Evgeniy Gribkov (alle anzeigen)

  • Gespeicherte Prozedur zum Löschen lokaler temporärer Tabellen in SQL Server erstellen – Juni 16, 2021
  • Dediziertes Link-Quellcodeverwaltungs-Repository – Mai 6, 2021
  • Datenbankversionskontrolle mit der Quellcodeverwaltung für SQL Server – Mai 5, 2021

sql complete, SQL Server, SQL Server-Transaktionen, gespeicherte SQL-Prozedur

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht.