修正: 含まれている可用性グループを持つ 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
データベースに存在します。 これらのエラーを修正し、ジョブを正常に実行できるようにするには、リスナーに接続し、テーブルとテーブル内の行を作成することで、インスタンス レベルの syssubsystems
テーブルを、含まれている可用性グループの msdb
データベースに手動でコピーできます。
エラー 2
包含可用性グループを作成すると、5 秒ごとに次のエラー メッセージが表示されます。
アクティブ化されたプロシージャ '[dbo]。キュー '<AGName>_AG_SYNC_CONTAINED_msdb.dbo.syspolicy_event_queue' で実行されている [sp_syspolicy_events_reader] は、"プリンシパル "##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)
オブジェクト 'xp_msver'、データベース 'mssqlsystemresource'、スキーマ 'sys' に対する EXECUTE 権限が拒否されました。 (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 エージェント オブジェクトのスクリプトを作成します。
- 含まれている可用性グループを削除します。
- 累積的な更新プログラムを適用します。
- 含まれている可用性グループを再作成します。
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。