SEND (Transact-SQL)
Envía un mensaje utilizando una conversación existente.
Sintaxis
SEND
ON CONVERSATION conversation_handle
[ MESSAGE TYPE message_type_name ]
[ ( message_body_expression ) ]
[ ; ]
Argumentos
- ON CONVERSATION conversation_handle
Especifica la conversación a la que pertenece el mensaje. conversation_handle debe contener un identificador de conversación válido.
- MESSAGE TYPE message_type_name
Especifica el tipo del mensaje enviado. Este tipo de mensaje se debe incluir en el contrato de servicio que utiliza esta conversación. El contrato debe permitir que el tipo de mensaje se envíe desde este lado de la conversación. Por ejemplo, es posible que el destino de la conversación sólo envíe mensajes especificados en el contrato como SENT BY TARGET o SENT BY ANY. Si se omite esta cláusula, el mensaje es de tipo DEFAULT.
- message_body_expression
Proporciona una expresión que representa el cuerpo del mensaje. message_body_expression es opcional. Sin embargo, si message_body_expression está presente, la expresión debe ser de un tipo que se pueda convertir a varbinary(max). La expresión no puede ser NULL. Si se omite esta cláusula, el cuerpo del mensaje está vacío.
Notas
Importante: |
---|
Si la instrucción SEND no es la primera de un lote o un procedimiento almacenado, la instrucción anterior debe terminar en un punto y coma (;), que es el terminador de instrucciones Transact-SQL. |
La instrucción SEND bloquea el grupo de conversación al que pertenece el asa de conversación especificado.
SEND no tiene validez en una función definida por el usuario.
Permisos
Para enviar un mensaje, el usuario actual debe tener el permiso SEND en el servicio del que procede el diálogo. Si existe un enlace de servicio remoto para el servicio, el usuario especificado en ese enlace de servicio remoto debe tener el permiso RECEIVE en la cola del servicio del que procede el diálogo.
Ejemplos
A. Enviar un mensaje
En este ejemplo se inicia un diálogo y se envía un mensaje XML en el diálogo. Para enviar el mensaje, el ejemplo convierte el objeto xml a 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) ;
Vea también
Referencia
BEGIN DIALOG CONVERSATION (Transact-SQL)
BEGIN CONVERSATION TIMER (Transact-SQL)
END CONVERSATION (Transact-SQL)