修正:將累積更新套用至具有自主可用性群組的 SQL Server 實例之後,就會發生錯誤
徵狀
請試想下列案例:
- 您有已部署自主可用性群組的 SQL Server 2022 實例。
- 您可以建立伺服器層級物件, (內含可用性群組的內容中) 登入和作業。
在此案例中,當您在此 SQL Server 實例上安裝累積更新之後,就會發生下列其中一個錯誤。
錯誤 1
SQL Server Agent 作業失敗,並出現下列錯誤訊息:
無法開始執行步驟 2 (原因:JobOwner <JobOwner> 沒有許可權可以使用 <proxy #> 作為子系統 SSIS) 。 此步驟失敗。
您會看到 SQL Server Agent 錯誤記錄檔記錄類似下列的錯誤訊息:
<時間戳> - ! [298] SQLServer 錯誤:208,對象名稱 'syssubsystems' 無效。 [SQLSTATE 42S02]
<時間戳> - ! [517] SQL 錯誤號碼 208,嚴重性 16
在這個階段中 syssubsystems
,包含之可用性群組的資料庫遺漏 msdb
數據表,而且存在於實例層級 msdb
資料庫中。 若要修正這些錯誤並允許作業順利執行,您可以手動將實例層級 syssubsystems
數據表複製到 msdb
所包含可用性群組的資料庫,方法是連線到接聽程式,並在數據表中建立數據表和數據列。
錯誤 2
建立自主可用性群組之後,每隔五秒就會看到下列錯誤訊息:
啟動的程式 『[dbo]。在佇列 '<AGName>_AG_SYNC_CONTAINED_msdb.dbo.syspolicy_event_queue' 上執行的 [sp_syspolicy_events_reader]' 會輸出下列內容:'無法以資料庫主體身分執行,因為主體 “##MS_PolicyEventProcessingLogin##” 不存在、無法模擬此類型的主體,或您沒有許可權。」
錯誤 3
Database Mail 停止運作之後,嘗試執行sysmail
預存程式將會報告類似下列錯誤訊息:
物件 『[dbo]。[sp_syspolicy_events_reader]' 不存在於資料庫 'master' 中,或對這項作業無效。
錯誤 4
建立自主可用性群組之後,如果您連線到包含的可用性群組接聽程式並建立 SQL Server 登入主體,當您使用登入主體進行連線時,SQL Server Management Studio (SSMS) 中會收到下列錯誤:
線上到<接聽程式>時發生錯誤
無法擷取此要求的數據。 (Microsoft.SqlServer.Management.Sdk.Sfc)
執行 Transact-SQL 語句或批次時發生例外狀況。 (Microsoft.SqlServer.ConnectionInfo)
物件 『xp_msver』、資料庫 'mssqlsystemresource'、架構 'sys' 上的 EXECUTE 許可權遭到拒絕。 (Microsoft SQL Server,錯誤:229)
之所以發生此錯誤,public
是因為該角色並未被授EXECUTE
xp_msver
與 AG) master 中所包含可用性群組 (擴充預存程式的許可權。
解決方案
下列 SQL Server 累積更新已修正此問題:
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含先前組建中的所有 Hotfix 和安全性修正。 建議您為版本的 SQL Server 安裝最新的組建:
狀態
Microsoft 目前正在調查這些問題。 當我們找到更多資訊或指引時,本文將會更新。 在那之前,您可以採取下列必要預防措施,再將累積更新安裝到具有自主可用性群組的安裝:
- 編寫伺服器層級物件的腳本,並 SQL Server Agent物件。
- 卸除包含的可用性群組。
- 套用累積更新。
- 重新建立包含的可用性群組。
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。
參考
瞭解 Microsoft 用來描述軟體更新的 術語 。