Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit der WAITFOR-Anweisung lässt sich die Ausführung eines Batches, einer gespeicherten Prozedur oder einer Transaktion anhalten, bis Folgendes eintritt:
- Ein angegebenes Zeitintervall ist verstrichen.
- Eine angegebene Uhrzeit wurde erreicht.
- Eine angegebene RECEIVE-Anweisung führt zur Änderung oder Rückgabe von zumindest einer Zeile in eine Service Broker-Warteschlange.
Die tatsächliche Zeitverzögerung kann von der angegebenen Zeit abweichen und hängt von der Aktivitätsstufe des Servers ab. Der Zeitleistungsindikator startet, wenn der der WAITFOR-Anweisung zugeordnete Thread geplant wird. Wenn der Server ausgelastet ist, kann der Thread möglicherweise nicht sofort geplant werden. Deshalb ist die Zeitverzögerung möglicherweise länger als die angegebene Zeit.
Die WAITFOR-Anweisung wird mit einer der folgenden Klauseln angegeben:
Mit dem DELAY-Schlüsselwort, gefolgt von einer time_to_pass-Zeitspanne, die verstreichen muss, bevor die WAITFOR-Anweisung abgeschlossen wird. Die Wartezeit, bevor die WAITFOR-Anweisung abgeschlossen wird, kann bis zu 24 Stunden betragen.
Im folgenden Beispiel wird dasDELAY-Schlüsselwort verwendet, damit zwei Sekunden gewartet wird, bevor eineSELECT-Anweisung ausgeführt wird:WAITFOR DELAY '00:00:02' SELECT EmployeeID FROM AdventureWorks.HumanResources.Employee;Mit dem TIME-Schlüsselwort, gefolgt von einer time_to_execute-Ausführungszeit, die angibt, zu welchem Zeitpunkt die WAITFOR-Anweisung abgeschlossen wird.
Im folgenden Beispiel wird dasTIME-Schlüsselwort verwendet, damit bis 22:00 Uhr (22:00) gewartet wird, um dann eine Überprüfung derAdventureWorks-Datenbank auszuführen, die sicherstellen soll, dass alle Seiten richtig zugeordnet und verwendet werden:USE AdventureWorks; GO BEGIN WAITFOR TIME '22:00'; DBCC CHECKALLOC; END; GOMit einer RECEIVE-Anweisungsklausel, welche eine oder mehrere Meldungen aus einer Service Broker-Warteschlange abruft. Wenn WAITFOR mit einer RECEIVE-Anweisung angegeben wird, wartet die Anweisung, bis eine Meldung in der Warteschlange eintrifft, sofern dort aktuell keine Meldung vorhanden ist.
Mit dem TIMEOUT-Schlüsselwort, gefolgt von einem timeout, das die Zeitdauer (in Millisekunden) angibt, die Service Broker auf das Eintreffen einer Meldung in der Warteschlange wartet. TIMEOUT kann entweder in der RECEIVE-Anweisung oder in der GET CONVERSATION GROUP-Anweisung angegeben werden.
| Version | Verlauf |
|---|---|
05. Dezember 2005 |
|
Siehe auch
Andere Ressourcen
RECEIVE (Transact-SQL)
WAITFOR (Transact-SQL)
GET CONVERSATION GROUP (Transact-SQL)