Partilhar via


BEGIN CONVERSATION TIMER (Transact-SQL)

Inicia um timer. Quando o tempo limite expira, o Service Broker coloca uma mensagem do tipo https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer na fila local para a conversação.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • BEGIN CONVERSATION TIMER (conversation_handle)
    Especifica a conversação a ser cronometrada. conversation_handle deve ser do tipo uniqueidentifier.

  • TIMEOUT
    Especifica, em segundos, o tempo de espera antes de colocar a mensagem na fila.

Comentários

Um timer de conversação fornece uma maneira de um aplicativo receber uma mensagem em uma conversa depois de um período específico. Chamar BEGIN CONVERSATION TIMER em uma conversação antes de o timer expirar define o tempo limite para o novo valor. Diferentemente do tempo de vida da conversação, cada lado da conversação tem um timer de conversação independente. A mensagem DialogTimer chega à fila local sem afetar o lado remoto da conversação. Portanto, um aplicativo pode usar uma mensagem de timer para qualquer propósito.

Por exemplo, você pode usar o timer de conversação para evitar que um aplicativo espere demais por uma resposta atrasada. Se você espera que o aplicativo conclua um diálogo em 30 segundos, poderá definir o timer de conversação para esse diálogo como 60 segundos (30 segundos mais um período de tolerância de 30 segundos). Se o diálogo ainda estiver aberto depois de 60 segundos, o aplicativo receberá uma mensagem de tempo limite na fila para esse diálogo.

Como opção, um aplicativo pode usar um timer de conversação para solicitar ativação em um determinado momento. Por exemplo, você pode criar um serviço que informe o número de conexões ativas em intervalos de alguns minutos ou um serviço que informe o número de ordens de compra abertas toda noite. O serviço define um timer de conversação para expirar na hora desejada; quando o timer expira, o Service Broker envia uma mensagem DialogTimer. A mensagem DialogTimer faz o Service Broker iniciar o procedimento armazenado de ativação para a fila. O procedimento armazenado envia uma mensagem ao serviço remoto e reinicia o timer de conversação.

BEGIN DIALOG CONVERSATION TIMER não é válido em uma função definida pelo usuário.

Permissões

A permissão para definir um timer de conversação tem como padrão usuários com permissão SEND no serviço para a conversação, membros da função de banco de dados sysadmin e membros da função de banco de dados fixa db_owner.

Exemplos

O exemplo a seguir define um intervalo de dois minutos na caixa de diálogo identificada por @dialog\_handle.

-- @dialog_handle is of type uniqueidentifier and
-- contains a valid conversation handle.

BEGIN CONVERSATION TIMER (@dialog_handle)
TIMEOUT = 120 ;