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

ms188407.note(es-es,SQL.90).gifImportante:
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)

Otros recursos

Tutoriales de Service Broker

Ayuda e información

Obtener ayuda sobre SQL Server 2005