SEND (Transact-SQL)
Envoie un message à l'aide d'une conversation existante.
Syntaxe
SEND
ON CONVERSATION conversation_handle
[ MESSAGE TYPE message_type_name ]
[ ( message_body_expression ) ]
[ ; ]
Arguments
- ON CONVERSATION conversation_handle
Spécifie la conversation à laquelle appartient le message. L'argument conversation_handle doit contenir un identificateur de conversation valide.
- MESSAGE TYPE message_type_name
Spécifie le type du message envoyé. Ce type de message doit être inclus dans le contrat de service qu'utilise la conversation. Le contrat doit autoriser l'envoi de ce type de message depuis cette partie de la conversation. Par exemple, la cible de la conversation ne peut envoyer que les messages spécifiés dans le contrat comme SENT BY TARGET ou SENT BY ANY. Si cette clause est omise, le message est du type DEFAULT.
- message_body_expression
Fournit une expression représentant le corps du message. L'argument message_body_expression est facultatif. Toutefois, si l'argument message_body_expression est présent, le type d'expression doit pouvoir être converti vers le type varbinary(max). Cette expression ne peut pas avoir la valeur NULL. Si cette clause est omise, le corps du message est vide.
Notes
Important : |
---|
Si l'instruction SEND n'est pas la première instruction d'un lot ou d'une procédure stockée, l'instruction précédente doit se terminer par un point-virgule (;), le terminateur d'instruction Transact-SQL. |
L'instruction SEND verrouille le groupe de conversation auquel appartient le handle de conversation spécifié.
L'instruction SEND n'est pas valide dans une fonction définie par l'utilisateur.
Autorisations
Pour envoyer un message, l'utilisateur actuel doit disposer d'une autorisation SEND pour le service dont provient le dialogue. S'il existe une liaison de service distant, l'utilisateur spécifié dans celle-ci doit disposer d'autorisations RECEIVE sur la file d'attente pour le service dont provient le dialogue.
Exemple
A. Envoi d'un message
Cet exemple démarre une dialogue et envoie un message XML. Pour envoyer le message, l'exemple convertit l'objet xml au format 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) ;
Voir aussi
Référence
BEGIN DIALOG CONVERSATION (Transact-SQL)
BEGIN CONVERSATION TIMER (Transact-SQL)
END CONVERSATION (Transact-SQL)
Autres ressources
Didacticiels de Service Broker