BEGIN CONVERSATION TIMER (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

啟動計時器。 當逾時到期時,Service Broker 會將 https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer 類型的訊息放在交談的本機佇列上。

Transact-SQL 語法慣例

Syntax

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

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

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)