Aufrufen gespeicherter Prozeduren
Gespeicherte Prozeduren können von einer Anwendung, von einem Benutzer oder beim Starten von SQL Server aufgerufen werden.
Ausführen einer gespeicherten Prozedur durch einen Benutzer
Wenn eine Anwendung oder ein Benutzer eine gespeicherte Prozedur ausführt, wird der EXECUTE-Befehl oder dessen Verknüpfung verwendet, gefolgt vom zweiteiligen Namen der Prozedur. Beispiel:
EXEC dbo.uspGetEmployeeManagers
Gespeicherte Systemprozeduren werden auch mithilfe des Schlüsselworts EXECUTE oder EXEC aufgerufen. Die aufrufende Datenbanksortierung wird beim Abgleichen von Systemprozedurnamen verwendet. Wenn bei der Datenbanksortierung die Groß-/Kleinschreibung beachtet wird, müssen Sie die gespeicherte Prozedur mit exakter Groß-/Kleinschreibung des Prozedurnamens ausführen.
Wenn die gespeicherte Prozedur die erste Anweisung im T-SQL-Batch ist, kann die Prozedur ohne das EXECUTE- oder EXEC-Schlüsselwort ausgeführt werden.
Verwenden Sie die Katalogansichten, um die genauen Systemprozedurnamen zu überprüfen:
sys.system_objects
sys.system_parameters
Gespeicherte Systemprozeduren werden sp_ vorangestellt. Vom System gespeicherte Prozeduren werden nicht von Benutzern erstellt, sondern sind Teil aller benutzerdefinierten und systemdefinierter Datenbanken. Sie benötigen keinen vollqualifizierten Namen, der ausgeführt werden soll. Es empfiehlt sich jedoch, den Sys-Schemanamen einzuschließen. Beispiel:
EXEC sys.sp_who;
Automatisches Ausführen einer gespeicherten Prozedur
Sie können eine gespeicherte Prozedur jedes Mal ausführen, wenn SQL Server gestartet wird. Möglicherweise möchten Sie Datenbankwartungsvorgänge ausführen oder eine Prozedur als Hintergrundprozess ausführen. Gespeicherte Prozeduren, die automatisch ausgeführt werden, können keine Eingabe- oder Ausgabeparameter enthalten.
Verwenden Sie die sp_procoption , um eine gespeicherte Prozedur jedes Mal auszuführen, wenn eine Instanz von SQL Server gestartet wird. Die Syntax lautet:
sp_procoption [ @ProcName = ] 'procedure'
, [ @OptionName = ] 'option'
, [ @OptionValue = ] 'value'
Beispiel:
EXEC sp_procoption @ProcName = myProcedure
, @OptionName = 'startup'
, @OptionValue = 'on';
Wenn Sie mehrere Prozeduren ausführen möchten, die sie nicht parallel ausführen müssen, erstellen Sie eine Prozedur als Startprozedur, und rufen Sie die anderen Prozeduren aus der Startprozedur auf. Dadurch wird nur ein Arbeitsthread verwendet.
Startprozeduren müssen sich in der Masterdatenbank befinden.