(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

GET CONVERSATION GROUP (Transact-SQL)

Gibt den Bezeichner der Konversationsgruppe für die nächste zu empfangende Nachricht zurück und sperrt die Konversationsgruppe für die Konversation, die die Nachricht enthält. Der Konversationsgruppenbezeichner kann zum Abrufen der Informationen zum Konversationsstatus vor dem Abrufen der eigentlichen Nachricht verwendet werden.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version).

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

[ WAITFOR ( ]
   GET CONVERSATION GROUP @conversation_group_id
      FROM <queue>
[ ) ] [ , TIMEOUT timeout ]
[ ; ]


<queue> ::=
{
    [ database_name . [ schema_name ] . | schema_name . ] queue_name
}

WAITFOR

Gibt an, dass die GET CONVERSATION GROUP-Anweisung darauf wartet, dass eine Nachricht in der Warteschlange eintrifft, wenn zurzeit keine Nachrichten vorhanden sind.

@conversation_group_id

Eine Variable zum Speichern der Konversationsgruppen-ID, die von der GET CONVERSATION GROUP-Anweisung zurückgegeben wird. Die Variable muss den Datentyp uniqueidentifier haben. Sind keine Konversationsgruppen verfügbar, wird die Variable auf NULL festgelegt.

FROM

Gibt die Warteschlange an, aus der die Konversationsgruppe abgerufen werden soll.

database_name

Der Name der Datenbank, die die Warteschlange enthält, aus der die Konversationsgruppe abgerufen werden soll. Wird database_name nicht angegeben, wird standardmäßig die aktuelle Datenbank verwendet.

schema_name

Der Name des Schemas, das die Warteschlange besitzt, aus der die Konversationsgruppe abgerufen werden soll. Wird schema_name nicht angegeben, wird standardmäßig das Standardschema für den aktuellen Benutzer verwendet.

queue_name

Der Name der Warteschlange, aus der die Konversationsgruppe abgerufen werden soll.

TIMEOUT timeout

Gibt die Zeitdauer (in Millisekunden) an, die Service Broker auf das Eintreffen einer Nachricht in der Warteschlange wartet. Diese Klausel darf nur zusammen mit der WAITFOR-Klausel verwendet werden. Wenn eine Anweisung, die WAITFOR verwendet, diese Klausel nicht einschließt, oder wenn timeout den Wert -1 aufweist, unterliegt die Wartezeit keiner Begrenzung. Nach Ablauf des Timeouts legt GET CONVERSATION GROUP den Wert der @conversation_group_id-Variablen auf NULL fest.

Wichtiger Hinweis Wichtig

Falls die GET CONVERSATION GROUP-Anweisung nicht die erste Anweisung in einem Batch oder einer gespeicherten Prozedur ist, muss die vorherige Anweisung mit einem Semikolon (;) enden, dem Abschlusszeichen für Transact-SQL-Anweisungen.

Steht die in der Warteschlange angegebene GET CONVERSATION GROUP-Anweisung nicht zur Verfügung, wird für die Anweisung ein Transact-SQL-Fehler erzeugt.

Diese Anweisung gibt die nächste Konversationsgruppe zurück, wobei Folgendes gilt:

  • Die Konversationsgruppe kann erfolgreich gesperrt werden.

  • Die Konversationsgruppe verfügt in der Warteschlange über Nachrichten.

  • Die Konversationsgruppe weist von allen Konversationsgruppen, die die zuvor genannten Kriterien erfüllen, die höchste Prioritätsebene auf. Die Prioritätsebene einer Konversationsgruppe ist die höchste Prioritätsebene, die einer Konversation zugeordnet ist, die der Gruppe angehört und in der Warteschlange Nachrichten aufweist.

Aufeinander folgende Aufrufe von GET CONVERSATION GROUP innerhalb derselben Transaktion können mehr als eine Konversationsgruppe sperren. Steht keine Konversationsgruppe zur Verfügung, gibt die Anweisung NULL als Bezeichner der Konversationsgruppe zurück.

Wenn die WAITFOR-Klausel angegeben wird, wartet die Anweisung bis zum Ablauf des angegebenen Timeouts oder so lange, bis eine Konversationsgruppe verfügbar ist. Wird die Warteschlange gelöscht, während die Anweisung wartet, gibt die Anweisung sofort einen Fehler zurück.

GET CONVERSATION GROUP ist in einer benutzerdefinierten Funktion ungültig.

Zum Abrufen des Bezeichners einer Konversationsgruppe aus einer Warteschlange benötigt der aktuelle Benutzer die RECEIVE-Berechtigung für die Warteschlange.

A.Abrufen einer Konversationsgruppe ohne Begrenzung der Wartezeit

Im folgenden Beispiel wird @conversation_group_id auf den Konversationsgruppenbezeichner für die nächste verfügbare Nachricht in ExpenseQueue festgelegt. Der Befehl wartet so lange, bis eine Nachricht verfügbar ist.

DECLARE @conversation_group_id UNIQUEIDENTIFIER ;

WAITFOR (
 GET CONVERSATION GROUP @conversation_group_id
     FROM ExpenseQueue
) ;

B.Abrufen einer Konversationsgruppe mit einer Wartezeit von einer Minute

Im folgenden Beispiel wird @conversation_group_id auf den Konversationsgruppenbezeichner für die nächste verfügbare Nachricht in ExpenseQueue festgelegt. Ist keine Nachricht innerhalb einer Minute verfügbar, wird GET CONVERSATION GROUP ohne Änderung des Werts von @conversation_group_id zurückgegeben.

DECLARE @conversation_group_id UNIQUEIDENTIFIER

WAITFOR (
    GET CONVERSATION GROUP @conversation_group_id 
    FROM ExpenseQueue ),
TIMEOUT 60000 ;

C.Abrufen einer Konversationsgruppe mit unmittelbarer Rückgabe

Im folgenden Beispiel wird @conversation_group_id auf den Konversationsgruppenbezeichner für die nächste verfügbare Nachricht in ExpenseQueue festgelegt. Wenn keine Nachricht verfügbar ist, wird GET CONVERSATION GROUP sofort ohne Änderung des Werts von @conversation_group_id zurückgegeben.

DECLARE @conversation_group_id UNIQUEIDENTIFIER ;

GET CONVERSATION GROUP @conversation_group_id
FROM AdventureWorks.dbo.ExpenseQueue ;

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft