Поделиться через


BEGIN CONVERSATION TIMER (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Запускает таймер. Когда истекает время ожидания, Service Broker помещает сообщение типа https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer в локальную очередь для беседы.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

BEGIN CONVERSATION TIMER (conversation_handle)
Указывает диалог, длительность которого нужно проконтролировать. conversation_handle должен иметь тип uniqueidentifier.

TIMEOUT
Указывает время ожидания (в секундах) перед добавлением сообщения в очередь.

Замечания

Таймер диалога предоставляет приложению способ получения сообщения в диалоге по истечении заданного времени. Вызов BEGIN CONVERSATION TIMER в диалоге до истечения времени ожидания устанавливает новое значение времени ожидания. В отличие от времени жизни диалога у каждой стороны диалога имеется свой таймер диалога. Сообщение DialogTimer появляется в локальной очереди, не оказывая влияния на удаленную сторону диалога. Поэтому приложение может использовать сообщение таймера для любых нужд.

Например, можно использовать таймер диалога для предотвращения слишком долгого ожидания приложением запоздалого отклика. Если завершение диалога ожидается в течение 30 секунд, то можно установить таймер для этого диалога на 60 секунд (30 секунд плюс 30 секунд допустимой задержки). Если диалог все еще открыт по истечении 60 секунд, приложение получит в очереди этого диалога сообщение об истечении времени ожидания.

В качестве альтернативы приложение может использовать таймер диалога для запроса активации в определенный момент. Например, можно создать службу, которая каждые пять минут сообщает число активных подключений. или службу, которая каждый вечер сообщает число открытых заказов на покупку. Служба задает срок действия таймера беседы в нужное время; По истечении срока действия таймера Service Broker отправляет сообщение DialogTimer . Сообщение DialogTimer приводит к тому, что Компонент Service Broker запускает хранимую процедуру активации для очереди. Хранимая процедура отправляет сообщение удаленной службе и перезапускает таймер диалога.

Инструкция BEGIN CONVERSATION TIMER не может использоваться в пользовательских функциях.

Разрешения

По умолчанию разрешением на установку таймера диалога обладают пользователи, у которых есть разрешение SEND для службы в диалоге, члены предопределенной роли сервера sysadmin и члены предопределенной роли базы данных db_owner.

Примеры

Этот пример устанавливает двухминутное время ожидания для диалога с дескриптором @dialog_handle.

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

См. также

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