Automatische Ausführung gespeicherter Prozeduren
Gespeicherte Prozeduren, die für die automatische Ausführung markiert sind, werden bei jedem Start von SQL Server ausgeführt.Dies kann hilfreich sein, wenn bestimmte Operationen regelmäßig ausgeführt werden sollen oder eine gespeicherte Prozedur als Prozess im Hintergrund ausgeführt wird und ihre Ausführung jederzeit sichergestellt sein muss. Die automatische Ausführung gespeicherter Prozeduren bietet sich zudem an, um System- oder Wartungstasks in tempdb mithilfe von gespeicherten Prozeduren durchzuführen, z. B. das Erstellen einer globalen temporären Tabelle. Auf diese Weise ist sichergestellt, dass eine solche temporäre Tabelle stets vorhanden ist, wenn tempdb beim Start von SQL Server neu erstellt wird.
Eine automatisch ausgeführte gespeicherte Prozedur wird mit denselben Berechtigungen ausgeführt, die den Mitgliedern der festen Serverrolle sysadmin zugewiesen sind. Alle Fehlermeldungen, die von der gespeicherten Prozedur erzeugt werden, werden in das SQL Server-Fehlerprotokoll geschrieben. Von einer gespeicherten Prozedur, die automatisch ausgeführt wird, sollten keine Resultsets zurückgegeben werden. Da die gespeicherte Prozedur von SQL Server und nicht von einem Benutzer ausgeführt wird, können die Resultsets an niemanden ausgegeben werden.
Die Ausführung der gespeicherten Prozeduren beginnt, sobald beim Systemstart die master-Datenbank wiederhergestellt wurde.
Festlegen, Löschen und Steuern der automatischen Ausführung
Nur der Systemadministrator (sa) kann eine gespeicherte Prozedur für die automatische Ausführung markieren. Außerdem muss sich die gespeicherte Prozedur in der master-Datenbank befinden, im Besitz von sa sein und darf keine Eingabe- oder Ausgabeparameter besitzen.
Verwenden Sie sp_procoption für folgende Aufgaben:
Angeben einer vorhandenen gespeicherten Prozedur als eine Autostartprozedur.
Verhindern der Ausführung einer Prozedur beim Start von SQL Server.
Obwohl die automatische Ausführung für jede gespeicherte Prozedur einzeln festgelegt werden muss, können Sie die SQL Server-Konfigurationsoption scan for startup procs mithilfe von sp_configure so festlegen, dass die automatische Ausführung aller gespeicherten Prozeduren beim Start von SQL Server in einem Schritt verhindert wird. Um das Starten dieser gespeicherten Prozeduren auszulassen, geben Sie das Ablaufverfolgungsflag 4022 als Startparameter an. Wenn Sie SQL Server mit einer Minimalkonfiguration starten (indem Sie das Flag -f verwenden), werden die gespeicherten Autostartprozeduren nicht ausgeführt. Weitere Informationen finden Sie unter Ablaufverfolgungsflags.
Bewährte Methode
Es gibt keine Beschränkung für die Anzahl der Autostartprozeduren. Bedenken Sie jedoch, dass jede dieser Prozeduren während der Ausführung jeweils einen Arbeitsthread belegt. Wenn Sie beim Systemstart mehrere Prozeduren ausführen müssen, diese aber nicht parallel ausgeführt werden müssen, legen Sie eine Prozedur als Autostartprozedur fest, und schreiben Sie diese Prozedur so, dass sie die anderen Prozeduren aufruft. Dadurch wird nur ein Arbeitsthread benötigt.
So legen Sie die automatische Ausführung einer gespeicherten Prozedur fest oder löschen diese
So legen Sie die Konfigurationsoption scan for startup procs fest oder deaktivieren diese