Поделиться через


SEND (Transact-SQL)

Отправляет сообщение с помощью существующего диалога.

Синтаксис

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

Аргументы

  • ON CONVERSATION conversation_handle
    Указывает диалог, к которому принадлежит сообщение. Аргумент conversation_handle должен содержать правильный идентификатор диалога.
  • MESSAGE TYPEmessage_type_name
    Указывает тип посылаемого сообщения. Этот тип сообщений должен входить в контракт службы, используемый этим диалогом. Контракт должен позволить отправить сообщение данного типа с этой стороны диалога. Например, целевая сторона диалога может посылать только сообщения, заданные в контракте как SENT BY TARGET или SENT BY ANY. Если это предложение пропущено, то сообщение принадлежит к типу сообщений DEFAULT.
  • message_body_expression
    Содержит выражение, представляющее тело сообщения. Аргумент message_body_expression является необязательным. Однако если аргумент message_body_expression указан, то выражение должно иметь тип, преобразуемый в тип varbinary(max). Выражение не может иметь значение NULL. Если это предложение не указано, то тело сообщения пустое.

Замечания

ms188407.note(ru-ru,SQL.90).gifВажно!
Если инструкция SEND не первая в пакете или является хранимой процедурой, то предшествующая инструкция должна заканчиваться точкой с запятой (;), признаком конца инструкции языка Transact-SQL.

Инструкция SEND блокирует группу сообщений, к которой принадлежит указанный дескриптор диалога.

Инструкция SEND недопустима в пользовательской функции.

Разрешения

Чтобы отправить сообщение, текущий пользователь должен иметь разрешение SEND на службу, которая начинает диалог. Если существует привязка удаленной службы для этой службы, то пользователь, указанный в удаленной службе, должен иметь разрешения RECEIVE на очередь для службы, которая начинает диалог.

Примеры

А. Отправка сообщения

В этом примере инициируется диалог и отправляется XML-сообщение. Чтобы отправить сообщение, в примере выполняется преобразование XML-объекта в тип 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) ;

См. также

Справочник

BEGIN DIALOG CONVERSATION (Transact-SQL)
BEGIN CONVERSATION TIMER (Transact-SQL)
END CONVERSATION (Transact-SQL)

Другие ресурсы

Учебники по компоненту Service Broker

Справка и поддержка

Получение помощи по SQL Server 2005