Compartir vía


BEGIN CONVERSATION TIMER (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Inicia un temporizador. Cuando expira el tiempo de espera, Service Broker coloca un mensaje del tipo https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer en la cola local para la conversación.

Convenciones de sintaxis de Transact-SQL

Sintaxis

BEGIN CONVERSATION TIMER ( conversation_handle )  
   TIMEOUT = timeout   
[ ; ]  

Argumentos

BEGIN CONVERSATION TIMER (conversation_handle)
Especifica la conversación cuyo tiempo se va controlar. El identificador_de_conversación debe ser de tipo uniqueidentifier.

TIMEOUT
Especifica la cantidad de tiempo en segundos que se va esperar antes de colocar el mensaje en la cola.

Observaciones

Un temporizador de conversación proporciona a la aplicación un método para recibir un mensaje en una conversación tras una cantidad de tiempo específica. Si se llama a BEGIN CONVERSATION TIMER en una conversación antes de que el temporizador haya expirado, el tiempo de espera se establece en el valor nuevo. A diferencia de la duración de la conversación, cada parte de la conversación cuenta con un temporizador de conversación independiente. El mensaje DialogTimer llega a la cola local sin afectar a la parte remota de la conversación. Por lo tanto, una aplicación puede utilizar un mensaje del temporizador con cualquier fin.

Por ejemplo, puede utilizar el temporizador de conversación para evitar que la aplicación espere durante demasiado tiempo una respuesta atrasada. Si tiene previsto que la aplicación complete el diálogo en 30 segundos, debe establecer el temporizador de conversación para dicho diálogo en 60 segundos (30 segundos más un período de gracia de 30 segundos). Si el diálogo sigue abierto después de 60 segundos, la aplicación recibe un mensaje de tiempo de espera agotado en la cola para dicho diálogo.

O bien, la aplicación puede utilizar un temporizador de conversación para solicitar la activación en un momento concreto. Por ejemplo, puede crear un servicio que informe del número de conexiones activas cada pocos minutos o un servicio que informe del número de pedidos de compra abiertos cada noche. El servicio establece que el temporizador de conversación expire en el momento deseado; si el temporizador expira, Service Broker envía un mensaje DialogTimer. El mensaje DialogTimer hace que Service Broker inicie el procedimiento almacenado de activación para la cola. El procedimiento almacenado envía un mensaje al servicio remoto y reinicia el temporizador de conversación.

BEGIN CONVERSATION TIMER no tiene validez en una función definida por el usuario.

Permisos

El permiso para configurar un temporizador de conversación se concede de forma predeterminada a los usuarios que tienen permisos SEND en el servicio para la conversación, a los miembros del rol fijo de servidor sysadmin y a los miembros del rol fijo de base de datos db_owner.

Ejemplos

En el ejemplo siguiente se establece un tiempo de espera de dos minutos en el diálogo identificado por @dialog_handle.

-- @dialog_handle is of type uniqueidentifier and  
-- contains a valid conversation handle.  
  
BEGIN CONVERSATION TIMER (@dialog_handle)  
TIMEOUT = 120 ;  

Vea también

BEGIN DIALOG CONVERSATION (Transact-SQL)
END CONVERSATION (Transact-SQL)
RECEIVE (Transact-SQL)