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.
Convenções da sintaxe Transact-SQL
Sintaxe
BEGIN CONVERSATION TIMER ( conversation_handle )
TIMEOUT = timeout
[ ; ]
Argumentos
BEGIN CONVERSATION TIMER (conversation_handle)
Especifica a conversa 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 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 timer de conversa 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.
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 tem como padrão usuários com permissão SEND no serviço para a conversa, 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 ;
Consulte também
Referência
BEGIN DIALOG CONVERSATION (Transact-SQL)