KB4563115 - 修正: SQL Server でセカンダリ レプリカとして Always On 高可用性グループを使用すると、アップグレード スクリプトが失敗する

適用先
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2019 on Windows SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows

現象

セカンダリ レプリカとして Always On 高可用性グループ (AG) を使用することを想定しています。 Microsoft SQL Server 2016 を Service Pack 2 (SP2) の累積的な更新プログラム 11 (CU11) 以降のバージョンにアップグレードしようとすると、アップグレード スクリプトが失敗し、次のエラー メッセージが表示される場合があります。

DateTime spidSpidId データベース [DatabaseName] のサブスクリプション設定とシステム オブジェクトのアップグレード。

DateTime spidSpidId データベースが読み取り専用であるため、データベース "DatabaseName" を更新できませんでした。

DateTime spidSpidId sp_vupgrade_replication実行中にエラーが発生しました。

原因

SQL AG のセカンダリ レプリカでアップグレードが実行されると、データベースの回復とアップグレード スクリプトの実行の間に競合が発生します。 そのため、 sp_vupgrade_replication 内で使用するカーソルでは、読み取り専用データベースを正しく除外できません。 しばらくの間、回復フェーズのセカンダリ データベースが編集可能なデータベースのリストに含まれます。 したがって、これらのデータベースを更新しようとすると、データベースは読み取り専用であるため、例外が返されます。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

解決策

この問題は、次の SQL Server の累積的な更新プログラムで修正されています。

SQL Server の累積的な更新プログラムについて:

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。