解除安裝 Service Broker 應用程式

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

僅當繼續在同一執行個體中裝載資料庫時,才必須解除安裝 Service Broker 應用程式,但是將不再提供該應用程式實作的服務。 卸除資料庫將卸除該資料庫中的 Service Broker 物件。 將資料庫從一個執行個體移至另一個執行個體時也會移動該資料庫中裝載的服務。

解除安裝起始服務

若要解除安裝起始服務,先要讓應用程式停止建立外寄訊息。 阻止應用程式傳送新訊息的最佳方法依應用程式的類型而定。 對於使用預存程序起始交談的應用程式,您可能需要卸除該預存程序。 對於外部程式,您可能需要讓使用者無法使用此程式,或解除安裝此程式。

在您讓服務停止建立新訊息之後,請確定服務會處理每一則仍保留在佇列中的訊息。 您可以撰寫一個簡單程序來接收佇列上的每則訊息、結束含有錯誤的交談,並移除交談的狀態。 處理佇列中的所有訊息允許目標應用程式正常結束交談,而不需等候您正在關閉之服務的回應。

最後,卸除服務定義以確定 Service Broker 不再接受該服務的訊息。 卸除該服務的所有路由。 卸除該服務的合約、訊息類型和佇列,除非這些物件正在由執行個體中的其他服務使用。 必要時,卸除該服務的啟用預存程序。

解除安裝目標服務

若要解除安裝目標服務,請先確定該服務會處理仍保留在佇列中的每一則訊息。 您可以讓應用程式處理這些訊息,撰寫一個簡單程序來結束含有應用程式特定錯誤的交談,或只需卸除該服務以結束含有 Service Broker 錯誤的交談。 不論您選擇何種方法,結束交談允許正常結束起始應用程式,而不需等候您正在關閉服務的回應。

在裝載起始服務的資料庫中,卸除包含您正在解除安裝服務之網路位址的所有路由。 在針對此服務轉送訊息之執行個體的 msdb 資料庫中,卸除此服務的路由。 如果裝載服務的執行個體在該服務的 msdb 中包含路由,則卸除該路由。

最後,卸除服務定義以確定 Service Broker 不再接受該服務的訊息。 卸除該服務的合約、訊息類型和佇列,除非這些物件正在由執行個體中的其他服務使用。 必要時,卸除該服務的啟用預存程序。

另請參閱