Share via


BEGIN CONVERSATION TIMER (Transact-SQL)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Inicia um timer. Quando o tempo limite expirar, o Agente de Serviço colocará uma mensagem do tipo https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer na fila local para a conversa.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

BEGIN CONVERSATION TIMER (conversation_handle)
Especifica a conversa a ser cronometrada. conversation_handle precisa 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 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 antes de o timer expirar define o tempo limite para o novo valor. Diferentemente do tempo de vida da conversa, cada lado da conversa tem um timer de conversa independente. A mensagem DialogTimer chega na fila local sem afetar o lado remoto da conversa. Portanto, um aplicativo pode usar uma mensagem de timer para qualquer propósito.

Por exemplo, você pode usar o timer de conversa 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 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 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 temporizador de conversa para expirar na hora desejada. Quando o temporizador expirar, o Agente de Serviço enviará uma mensagem DialogTimer. A mensagem DialogTimer faz com que o Agente de Serviço inicie 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.

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

Permissões

A permissão para definir um tenporizador de conversa tem como padrão os usuários com permissões SEND no serviço para a conversa, os membros da função de servidor fixa sysadmin e os 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 ;  

Consulte Também

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