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이 될 수 없습니다. 이 절이 생략된 경우에는 메시지 본문이 비어 있습니다.
주의
중요: |
---|
SEND 문이 일괄 처리 또는 저장 프로시저에서 첫 번째 문이 아닌 경우 이전 문은 Transact-SQL 문 종결자인 세미콜론(;)으로 종료되어야 합니다. |
SEND 문은 지정된 대화 핸들이 속해 있는 대화 그룹을 잠급니다.
SEND는 사용자 정의 함수에 유효하지 않습니다.
사용 권한
메시지를 보내려면 현재 사용자가 대화를 보내는 서비스에 대한 SEND 권한이 있어야 합니다. 서비스에 대한 원격 서비스 바인딩이 이미 있는 경우 해당 원격 서비스 바인딩에 지정된 사용자는 대화를 보내는 서비스의 큐에 대한 RECEIVE 권한이 있어야 합니다.
예
1. 메시지 보내기
다음 예에서는 대화를 시작하고 해당 대화에서 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)