修正: 含まれている可用性グループを持つSQL Serverのインスタンスに累積的な更新プログラムを適用した後にエラーが発生する
現象
次のような状況で問題が発生します。
- SQL Server 2022 のインスタンスがあり、包含可用性グループがデプロイされています。
- サーバー レベルのオブジェクト (ログインとジョブ) は、包含可用性グループのコンテキストで作成します。
このシナリオでは、SQL Server のこのインスタンスに累積的な更新プログラムをインストールした後に、次のいずれかのエラーが発生します。
エラー 1
SQL Server エージェント ジョブが失敗し、次のエラー メッセージが表示されます。
手順 2 の実行を開始できません (理由: JobOwner <JobOwner> には、サブシステム SSIS にプロキシ <#> を使用するアクセス許可がありません)。 ステップが失敗しました。
SQL Server エージェントエラー ログには、次のようなエラー メッセージが記録されます。
<Timestamp> - ! [298] SQLServer エラー: 208, 無効なオブジェクト名 'syssubsystems'. [SQLSTATE 42S02]
<Timestamp> - ! [517] SQL エラー番号 208、重大度 16
この段階では、 syssubsystems
テーブルが包含可用性グループのデータベースに msdb
存在しず、インスタンス レベル msdb
のデータベースに存在します。 これらのエラーを修正し、ジョブを正常に実行できるようにするには、リスナーに接続し、テーブルとテーブルmsdb
内の行を作成することで、インスタンス レベルsyssubsystems
のテーブルを包含可用性グループのデータベースに手動でコピーできます。
エラー 2
包含可用性グループを作成すると、5 秒ごとに次のエラー メッセージが表示されます。
アクティブ化された proc '[dbo]。[sp_syspolicy_events_reader]' がキュー '<AGName>_AG_SYNC_CONTAINED_msdb.dbo.syspolicy_event_queue' で実行されている場合、"##MS_PolicyEventProcessingLogin##" プリンシパルが存在しないため、データベース プリンシパルとして実行できません。この種類のプリンシパルは偽装できないか、アクセス許可がありません。
エラー 3
データベース メールが動作を停止すると、ストアド プロシージャを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)
EXECUTE アクセス許可は、オブジェクト 'xp_msver'、データベース 'mssqlsystemresource'、スキーマ 'sys' で拒否されました。 (Microsoft SQL Server、エラー: 229)
このエラーは、ロールにpublic
、包含可用性グループ (AG) マスターのxp_msver
拡張ストアド プロシージャに対するアクセス許可が付与EXECUTE
されていないために発生します。
解決方法
この問題は、SQL Serverの次の累積的な更新プログラムで修正されています。
SQL Server 2022 の累積的な更新プログラム 4
SQL Serverの累積的な更新プログラムについて
SQL Serverの各新しい累積的な更新プログラムには、以前のビルドにあったすべての修正プログラムとセキュリティ修正プログラムが含まれています。 SQL Serverのバージョンの最新のビルドをインストールすることをお勧めします。
SQL Server 2022 の最新の累積的な更新プログラム
状態
Microsoft では現在、これらの問題を調査しています。 この記事は、詳細情報またはガイダンスが見つかると更新されます。 それまでは、可用性グループが含まれているインストールに累積的な更新プログラムをインストールする前に、次の必要な予防措置を講じることができます。
- サーバー レベルのオブジェクトとSQL Server エージェント オブジェクトをスクリプト化します。
- 包含可用性グループを削除します。
- 累積的な更新プログラムを適用します。
- 含まれている可用性グループを再作成します。
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
Microsoft がソフトウェア更新プログラムの説明に使用する 用語 について説明します。