Wyślij (Transact-SQL)

Wysyła wiadomość przy użyciu istniejącej konwersacji.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

SEND
   ON CONVERSATION conversation_handle
   [ MESSAGE TYPE message_type_name ]
   [ ( message_body_expression ) ]
[ ; ]

Argumenty

  • NA KONWERSACJĘconversation_handle
    Określa konwersacji, należącej do wiadomości.conversation_handle Musi zawierać identyfikator prawidłowe konwersacji.

  • TYP WIADOMOŚCImessage_type_name
    Określa typ komunikatu wysłanej wiadomości.Ten typ komunikatu musi znajdować się usługa kontrakt , wykorzystywanej do tej konwersacji.kontrakt musi umożliwiać typ komunikatu może być wysłana od tej stronie konwersacji.Na przykład miejsce docelowe konwersacji może jedynie wysyłać wiadomości określone w kontrakt jako wysyłane przez obiekt docelowy lub wysłane przez dowolny.Pominięcie tej klauzula , wiadomość jest typ komunikatu domyślny.

  • message_body_expression
    Zawiera wyrażenie reprezentujące treści wiadomości.message_body_expression Jest opcjonalne.Jednakże jeśli message_body_expression jest obecny wyrażenie musi być typu, które mogą być konwertowane na varbinary(max).wyrażenie nie może być NULL.W przypadku pominięcia tej klauzula treści wiadomości jest puste.

Uwagi

Ważna informacjaWażne:

Jeśli WYSYŁANIA instrukcja nie jest pierwsza instrukcja w procedura składowana partia lub poprzednim instrukcja musi zakończone średnikiem (;).

Wyślij instrukcja przesyła wiadomości z usługa na jednym końcu Service Broker konwersacji usługa na drugim końcu konwersacji. PRZYJĘCIE instrukcja jest następnie używana do pobierania wysłanej wiadomości z kolejki, skojarzone z obiekt docelowy usługa.

dojście do konwersacji dostarczonych do KONWERSACJI W klauzula pochodzi z jednego z dwóch źródeł:

  • Podczas wysyłania wiadomości, który nie jest w odpowiedzi na wiadomości otrzymane od innej usługa, za pomocą dojście do konwersacji zwrócił się rozpocząć w oknie DIALOGOWYM instrukcja utworzony konwersacji.

  • Podczas wysyłania wiadomości, która jest odpowiedzią na komunikat wcześniej otrzymanych od innej usługa, za pomocą dojście do konwersacji zwrócone przez ODBIERZ instrukcja , że zwracane oryginalnej wiadomości.

W wielu przypadkach kod, który zawiera WYSYŁANIA instrukcja jest niezależna od kodu, który zawiera okna DIALOGOWEGO rozpocząć lub ODBIERZ instrukcji dostarczanie dojście do konwersacji.W tych przypadkach dojście do konwersacji musi być jednym z elementów danych w informacji o stanie przekazywane do kodu, który zawiera WYSYŁANIA instrukcja.

Wiadomości, które są przesyłane do usługa w innym wystąpienie programu Aparat baz danych programu SQL Server są przechowywane w kolejce transmisji w bieżącej bazie danych, dopóki nie mogą być przenoszone do kolejki usługa zdalnego wystąpienie.Wiadomości wysłane do usługa , w tym samym wystąpienie Aparat baz danych są wprowadzane bezpośrednio do kolejki skojarzone z tą usługa.Jeśli warunek uniemożliwia lokalne wiadomości są wprowadzane bezpośrednio w kolejce obiekt docelowy usługa , mogą być przechowywane w kolejce transmisji aż warunek został rozwiązany.Gdy wystąpi przykładami niektórych typów błędów lub kolejkiusługa obiekt docelowysą nieaktywne. Można użyć sys.transmission_queue widok systemu, aby zobaczyć wiadomości w kolejce transmisji.

Wiadomości w kolejkach transmisji dla wystąpienie są przekazywane w sekwencji na podstawie:

  • Priorytet poziom ich skojarzone punkt końcowy konwersacji.

  • W ramach priorytetu poziom, ich sekwencji wysyłania w konwersacji.

Poziomy priorytetu, określony w priorytetach konwersacji są stosowane tylko do wiadomości w kolejce transmisji, jeśli opcja bazy danych HONOR_BROKER_PRIORITY jest zestaw na.Jeśli HONOR_BROKER_PRIORITY jest zestaw na wyłączone, wszystkie wiadomości umieszczone w kolejce transmisji dla tej bazy danych są przypisywane priorytet domyślny poziom 5.Poziomy priorytetu nie są stosowane do WYSYŁANIA, w przypadku gdy wiadomości są umieszczane bezpośrednio do kolejki usługa w tym samym wystąpienie Aparat baz danych.

Wyślij instrukcja blokuje dojście do konwersacji i nie grupy, do której należy dany uchwyt.

Wyślij nie jest prawidłowy w zdefiniowanej przez użytkownika funkcja.

Uprawnienia

Aby wysłać wiadomość, bieżący użytkownik musi mieć uprawnienie WYSYŁANIA usługa jest okno dialogowe z.Jeśli zdalny usługa powiązanie usługa istnieje, użytkownika określonego w tym zdalnej usługa powiązanie musi mieć uprawnienia ODBIERANIE kolejek dla usługa jest okno dialogowe z.

Przykłady

W poniższym przykładzie uruchamia okno dialogowe i wysyła wiadomości XML w oknie dialogowym.Aby wysłać wiadomość, przykład konwertuje obiekt xml, aby varbinary(max).

DECLARE @dialog_handle UNIQUEIDENTIFIER,
        @ExpenseReport XML ;

SET @ExpenseReport = < construct message as appropriate for the application > ;

BEGIN DIALOG @dialog_handle
FROM SERVICE [//Adventure-Works.com/Expenses/ExpenseClient]
TO SERVICE '//Adventure-Works.com/Expenses'
ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseProcessing] ;


SEND ON CONVERSATION @dialog_handle
    MESSAGE TYPE [//Adventure-Works.com/Expenses/SubmitExpense]
    (@ExpenseReport) ;