共用方式為


BEGIN CONVERSATION TIMER (Transact-SQL)

啟動計時器。當逾時到期,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 ;