SEND (Transact-SQL)

既存のメッセージ交換を使用して、メッセージを送信します。

構文

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

引数

  • ON CONVERSATION conversation_handle
    メッセージが属するメッセージ交換を指定します。conversation_handle には、有効なメッセージ交換識別子が含まれている必要があります。
  • MESSAGE TYPE message_type_name
    送信したメッセージのメッセージ型を指定します。このメッセージ型は、メッセージ交換で使用されるサービス コントラクトに含まれている必要があります。このコントラクトによって、メッセージ型をメッセージ交換の発信側から送信できます。たとえば、メッセージ交換の対象は、SENT BY TARGET または SENT BY ANY としてコントラクトに指定されるメッセージのみを送信できます。この句が省略されると、メッセージは DEFAULT のメッセージ型になります。
  • message_body_expression
    メッセージ本文を表す式を指定します。message_body_expression は省略可能です。ただし、message_body_expression が指定されている場合、式は varbinary(max) に変換できる型であることが必要です。この式が NULL になることはありません。この句が省略されると、メッセージ本文は空になります。

解説

ms188407.note(ja-jp,SQL.90).gif重要 :
SEND ステートメントがバッチまたはストアド プロシージャの最初のステートメントではない場合は、前のステートメントの後に、Transact-SQL ステートメントの終端文字であるセミコロン (;) を指定する必要があります。

SEND ステートメントは、指定されているメッセージ交換ハンドルが属しているメッセージ交換グループをロックします。

SEND は、ユーザー定義の関数では無効です。

権限

メッセージを送信するには、現在のユーザーは、ダイアログの送信元のサービスに対して SEND 権限を持っている必要があります。サービスに対してリモート サービス バインドが存在する場合、そのリモート サービス バインドで指定されているユーザーは、ダイアログの送信元であるサービス用のキューに対して RECEIVE 権限を持っている必要があります。

A. メッセージを送信する

次の例では、ダイアログを開始し、ダイアログ上の 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 の参考資料の入手