適用対象: SQL Server 2022、SQL Server 2019、SQL Server 2017、SQL Server 2016
まとめ
この記事では、SQL Server 2022 にアップグレードするときに発生する可能性がある一般的な問題について説明し、それぞれの解決策と回避策について説明します。 対象となるシナリオには、軽量クエリ プロファイルに関連付けられたアクセス違反ダンプ、部分的なSQL Serverインストールによるアップグレードのブロック、アップグレード後にオンラインに失敗するフェールオーバー クラスター インスタンス (FCI)、ディストリビューション データベースが Always On 可用性グループ (AG) の一部である場合のレプリケーション アップグレード スクリプト エラーなどがあります。 このガイドを使用して、SQL Server 2022 へのインプレース アップグレードの失敗をトラブルシューティングし、SQL Server インスタンスをオンラインに戻します。
Always On 環境でのアップグレード中のアクセス違反ダンプ
このエラーは、Always On 環境で SQL Server 2022 にアップグレードするときに発生します。 エラー メッセージと関連するログ エントリは、アップグレード プロセス中に生成された致命的な例外を示します。
エラー メッセージ
例外コード: c0000005 EXCEPTION_ACCESS_VIOLATION
アプリケーション イベント ログ
Error: A user request from the session with SPID <SPID> generated a fatal exception. SQL Server is terminating this session.
Information: Windows Error Reporting - Fault bucket INVALID_REQUEST, type 0
SQL Serverのエラーログ
Error: A user request from the session with SPID <SPID> generated a fatal exception. SQL Server is terminating this session. Contact Product Support Services with the dump produced in the log directory.
ソリューション
この問題は、SQL Server 2022 の LIGHTWEIGHT_QUERY_PROFILING に関する既知の問題です。
この問題は、SQL Server 2022 の
対処法
累積的な更新プログラムをまだ適用できない場合は、 LIGHTWEIGHT_QUERY_PROFILINGをオフにします。
軽量プロファイリング は、 LIGHTWEIGHT_QUERY_PROFILING データベース スコープ構成を使用して、データベース レベルでオフになります。
ALTER DATABASE SCOPED CONFIGURATION SET LIGHTWEIGHT_QUERY_PROFILING = OFF;
非アクティブな SQL Server 2022 インスタンスによってブロックされたアップグレード
コンピューターに非アクティブな SQL Server 2022 インスタンスがあるため、SQL Server 2022 にアップグレードすることはできません。
原因
この問題は、以前のSQL Serverのインストールが失敗し、部分的にインストールされたインスタンスがコンピューターに残ったときに発生します。 SQL Server セットアップ プログラムは、エラーが発生してもインストールを自動的にロールバックしません。 部分的にインストールされたインスタンスには、インストールしようとしているSQL Serverのエディションが含まれていないため、同じバージョンに対する後のインストール試行が失敗します。
ソリューション
SQL Serverの部分的なインストールを削除してから、アップグレードを再起動します。
フェールオーバー クラスター インスタンスがアップグレード後にオンラインに失敗する
failover クラスター インスタンス (FCI) でSQL Serverを以前のバージョンから SQL Server 2022 にアップグレードすると、インスタンスがオンラインに失敗する可能性があります。 フェールオーバー クラスター マネージャーでは、SQL Server ロールは失敗と表示され、インスタンスは起動しません。
原因
SQL Server インスタンスがスクリプト アップグレード モードでスタックしているため、起動できません。 アップグレード中、SQL Serverはスタートアップ シーケンスの一部としてアップグレード スクリプトを実行します。 これらのスクリプトのいずれかが失敗した場合、または完了しなかった場合、インスタンスはスクリプト アップグレード モードのままであり、オンラインにすることはできません。
対処法
SQL Server インスタンスをオンラインにするには、更新プログラムの適用時にアップグレード スクリプトのエラーを解決するの手順に従って、実行中のアップグレード スクリプトをバイパスします。
注記
T902 トレース フラグは、起動時にアップグレード スクリプトの実行をオフにします。 保留中のアップグレード手順を完了できるように、基になるアップグレード スクリプトの問題を修正した後、トレース フラグを削除します。
ディストリビューション データベースが可用性グループ内にある場合のレプリケーション アップグレード スクリプト エラー
可用性グループ (AG) 内の distribution データベース をホストするサーバーで SQL Server 2022 にアップグレードすると、レプリケーション エラーが発生します。
注記
この問題は、SQL Server をバージョン 2016 SP2 CU3、SQL Server 2017 CU6、またはそれ以降のバージョンから SQL Server 2019 にアップグレードする場合にも発生する可能性があります。 この問題の修正プログラムは、 SQL Server 2019 用の累積的な更新プログラム 21 で入手できます。
エラー メッセージ
SQL Serverセットアップは完了しますが、レプリケーション コンポーネントの "レプリケーション アップグレード スクリプトの実行中にエラーが発生しました" というエラーが表示されます。 この状態のインスタンスで修復を実行すると、同じエラー メッセージが表示されます。
SQL Serverのエラーログ
Executing sp_vupgrade_replication.
Could not open distribution database <distribution_db_name> because it is offline or being recovered. Replication settings and system objects could not be upgraded. Be sure this database is available and run sp_vupgrade_replication again.
Error executing sp_vupgrade_replication.
Saving upgrade script status to 'SOFTWARE\Microsoft\MSSQLServer\Replication\Setup'.
原因
このエラーは、ディストリビューション データベースが AG の一部であり、インプレース アップグレードが試行されたときに発生します。
ソリューション
この修正プログラムは、SQL Server 2022 用の累積更新プログラム 5 で利用可能です。
対処法
累積的な更新プログラムを適用できない場合は、次の手順を使用します。
- AG からディストリビューション データベースを削除します。
- SQL Server 2022 へのアップグレードを実行します。
- アップグレードが完了したら、ディストリビューション データベースを AG に追加し直します。