Compartir a través de


BEGIN CONVERSATION TIMER (Transact-SQL)

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

Icono de vínculo a temasConvenciones 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. conversation_handle 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.

Notas

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 caducado, el tiempo de espera se establece en el valor nuevo. A diferencia de la vigencia 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 caduque en el momento deseado; si el temporizador caduca, 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 de la función fija de servidor sysadmin y a los miembros de la función fija 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 ;