BEGIN CONVERSATION TIMER (Transact-SQL)
S’applique à : SQL Server Azure SQL Managed Instance
Démarre le minuteur. Quand le délai d’attente expire, Service Broker place un message de type https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer
sur la file d’attente locale de la conversation.
Conventions de la syntaxe Transact-SQL
Syntaxe
BEGIN CONVERSATION TIMER ( conversation_handle )
TIMEOUT = timeout
[ ; ]
Arguments
BEGIN CONVERSATION TIMER (conversation_handle)
Indique la conversation à minuter. conversation_handle doit être de 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 le côté distant 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 ; quand le minuteur expire, Service Broker envoie un message DialogTimer. Suite à ce message DialogTimer, Service Broker démarre la procédure stockée d’activation pour 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 est octroyée 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.
Exemples
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 ;
Voir aussi
BEGIN DIALOG CONVERSATION (Transact-SQL)
END CONVERSATION (Transact-SQL)
RECEIVE (Transact-SQL)