修正:將累積更新套用至包含可用性群組的 SQL Server 實例之後,就會發生錯誤
徵兆
請參考下列案例:
- 您有已部署包含可用性群組的 SQL Server 2022 實例。
- 您可以在包含的可用性群組內容中建立伺服器層級物件(登入和作業)。
在此案例中,在您在此 SQL Server 實例上安裝累積更新之後,會發生下列其中一個錯誤。
錯誤 1
SQL Server Agent 作業失敗,並出現下列錯誤訊息:
無法執行步驟 2(原因:JobOwner JobOwner <> 沒有權限使用子系統 SSIS 的 Proxy <#> 。 步驟失敗。
您會看到 SQL Server Agent 錯誤記錄檔會記錄類似下列錯誤訊息的錯誤訊息:
<時間戳> - ! [298] SQLServer 錯誤:208,無效的物件名稱 'syssubsystems'。 [SQLSTATE 42S02]
<時間戳> - ! [517] SQL 錯誤號碼 208,嚴重性 16
在這個階段中, syssubsystems
數據表會從 msdb
自主可用性群組的資料庫遺失,並存在於實例層級 msdb
資料庫中。 若要修正這些錯誤並允許作業順利執行,您可以藉由連線到msdb
接聽程式並建立數據表和數據列,手動將實例層級syssubsystems
數據表複製到自主可用性群組的資料庫。
錯誤 2
建立包含的可用性群組之後,每隔五秒就會看到下列錯誤訊息:
啟動的 proc '[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
自主可用性群組 (AG) 主要上擴充預存程序的許可權 xp_msver
。
解決方法
此問題已修正在 SQL Server 的下列累積更新中:
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含先前組建中的所有 Hotfix 和安全性修正。 建議您為 SQL Server 版本安裝最新的組建:
狀態
Microsoft目前正在調查這些問題。 本文會在我們找到更多資訊或指引時更新。 在那之前,您可以先採取下列必要預防措施,再將累積更新安裝到包含可用性群組的安裝:
- 編寫伺服器層級物件和 SQL Server Agent 物件的腳本。
- 卸除包含的可用性群組。
- 套用累積更新。
- 重新建立包含的可用性群組。
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。
參考資料
了解 Microsoft 用來說明軟體更新的術語。