BEGIN CONVERSATION TIMER (Transact-SQL)
Démarre le minuteur. Lorsque le délai expire, Service Broker place un message de type https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer dans la file d'attente locale pour la conversation.
Syntaxe
BEGIN CONVERSATION TIMER ( conversation_handle )
TIMEOUT = timeout
[ ; ]
Arguments
BEGIN CONVERSATION TIMER (conversation_handle)
Indique la conversation à minuter. La variable conversation_handle doit être du type uniqueidentifier.TIMEOUT
Indique, en secondes, le délai qui doit s'écouler avant le placement du message dans la file d'attente.
Notes
Un minuteur de conversation permet à une application de recevoir un message sur une conversation après un délai spécifié. Appeler BEGIN CONVERSATION TIMER sur une conversation avant l'expiration du délai permet de définir une nouvelle valeur d'expiration. Contrairement à la durée de vie d'une conversation, chaque partie d'une conversation dispose d'un minuteur indépendant. Le message DialogTimer arrive dans la file d'attente locale sans affecter la partie distante de la conversation. Par conséquent, une application peut utiliser un message de minuteur à quelque fin que ce soit.
Par exemple, vous pouvez utiliser le minuteur pour éviter à une application d'attendre trop longtemps une réponse. Si l'application est censée terminer un dialogue en 30 secondes, vous pouvez définir le minuteur pour ce dialogue sur 60 secondes (30 secondes plus une période de grâce de 30 secondes). Si le dialogue est toujours ouvert une fois les 60 secondes écoulées, l'application reçoit un message d'expiration du délai dans la file d'attente de ce dialogue.
Une application peut également utiliser un minuteur pour demander une activation à un moment donné. Par exemple, vous pouvez créer un service qui génère un rapport sur le nombre de connexions actives régulièrement (toutes les x minutes) ou un service qui génère un rapport sur le nombre de bons de commande ouverts tous les soirs. Le service définit un minuteur de conversation de sorte qu'il expire au moment voulu ; lorsque le délai expire, Service Broker envoie un message DialogTimer. Suite à ce message DialogTimer, Service Broker lance la procédure stockée d'activation correspondant à la file d'attente. La procédure stockée envoie un message au service distant et redémarre le minuteur.
BEGIN CONVERSATION TIMER n'est pas valide dans une fonction définie par l'utilisateur.
Autorisations
L'autorisation de définition d'un minuteur de conversation revient par défaut aux utilisateurs qui disposent de l'autorisation SEND sur le service pour la conversation, aux membres du rôle serveur fixe sysadmin et aux membres du rôle de base de données fixe db_owner.
Exemple
L'exemple suivant illustre comment définir un délai d'expiration de deux minutes pour le dialogue identifié par @dialog_handle.
-- @dialog_handle is of type uniqueidentifier and
-- contains a valid conversation handle.
BEGIN CONVERSATION TIMER (@dialog_handle)
TIMEOUT = 120 ;