BEGIN CONVERSATION TIMER (Transact-SQL)
適用於:SQL Server Azure SQL 受控執行個體
啟動計時器。 當逾時到期時,Service Broker 會將 https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer
類型的訊息放在交談的本機佇列上。
語法
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)