共用方式為


內部啟動內容

本主題描述由內部啟動所啟動的預存程序之執行內容。

安全性內容

為啟動設定的佇列必須也指定執行啟動預存程序所使用的身分。SQL Server 會在啟動預存程序之前先模擬此使用者。

當預存程序也指定 EXECUTE AS 子句時,會發生兩個模擬。SQL Server 會先模擬為佇列指定的使用者並執行預存程序。當預存程序執行時,程序會模擬在程序的 EXECUTE AS 子句中所指定的使用者。

請注意為遠端服務繫結所指定的使用者通常和為啟動所指定的使用者不同。每個使用者所需的權限也不同。遠端服務繫結使用者並不需要從佇列讀取或是執行資料庫中預存程序的權限,而為啟動指定的使用者也不需要將訊息傳送至服務的權限。如需有關使用者權限的詳細資訊,請參閱<識別和存取控制 (Service Broker)>與<Service Broker 對話安全性>。

工作階段設定

Service Broker 會在與建立訊息之連接不同的背景工作階段中,於內部執行啟動的服務程式。為此工作階段設定的選項是資料庫的預設選項。

在 Service Broker 啟動的工作階段中,SQL Server 會將 PRINT 和 RAISERROR 陳述式的輸出寫入 SQL Server 錯誤記錄。Service Broker 不會提供參數給啟動的預存程序。Service Broker 不會考慮從啟動的預存程序傳回值,而且不會處理來自啟動的預存程序之結果集。

交易內容

啟動的預存程序負責管理交易。SQL Server 不會在啟動預存程序之前啟動交易,而且預存程序會在與啟動程序的內部作業不同的交易內容中執行。如需在啟動的預存程序中管理交易的討論,請參閱<交易訊息>。

失敗偵測

啟動的預存程序必須從啟動程序的佇列接收訊息。如果預存程序沒有接收訊息即結束,或是佇列監視器在短暫的逾時之後,偵測到預存程序未接收訊息,則佇列監視器會將預存程序視為已經失敗。在此情況下,佇列監視器會停止啟動預存程序。