Share via


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(zh-tw,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 協助