Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Eine gespeicherte Prozedur aus einem Windows-Formular asynchron ausführen und dann trennen?

Dies ist eigentlich ein recht häufiges Szenario. Sie können nichts Client-basiertes tun, da der Client möglicherweise weggeht und die Verbindung trennt und Sie die bisher geleistete Arbeit verlieren. Die Lösung besteht darin, Service Broker-Aktivierung zu verwenden :Sie erstellen einen Dienst in der Datenbank und hängen eine aktivierte Prozedur an. In Ihrer Anwendung (oder ASP-Seite) senden Sie eine Nachricht an den Dienst und binden die notwendigen Parameter für Ihr Verfahren ein. Nachdem Ihre Anwendung festgeschrieben ist, aktiviert die Nachricht die Dienstprozedur. Die Dienstprozedur liest die Parameter aus der Nachricht und ruft Ihre Prozedur auf. Da die Aktivierung auf einem Server-Thread erfolgt, der nichts mit Ihrer ursprünglichen Verbindung zu tun hat, ist dies zuverlässig. Tatsächlich kann der Server während sogar heruntergefahren und neu gestartet werden Ihre Prozedur wird ausgeführt und die Arbeit wird zurückgesetzt und dann fortgesetzt, da die Aktivierungsnachricht die Serviceprozedur nach dem Neustart erneut auslöst.

Aktualisieren

Ich habe die Details dazu einschließlich Beispielcode in meinem Blog veröffentlicht:Asynchrone Prozedurausführung .