現象
Microsoft SQL Server 2012 の AlwaysOn 可用性グループ機能を使用することを前提としています。 セカンダリレプリカへの接続アクセスを "読み取り可能" から "読み取り不可" に変更すると、指定されたレプリカでページ圧縮を使用するページが破損します。同期の再実行フェーズ中にエラーが発生したため、セカンダリレプリカでこの問題が発生している可用性データベースを回復することはできません。 セカンダリレプリカはプライマリレプリカと同期されず、"SUSPEND_FROM_REDO" という同期状態が報告されます。 さらに、セカンダリレプリカをホストしている SQL Server のエラーログに、次のエラーメッセージが表示されます。
<date> <Time> Spid<ID> エラー: 17066、深刻度:16、状態: 1. <> <>> <0><>IDのアサーション: "! pagefull": "! pagefull" を指定します。 このエラーは、タイミングに関連している可能性があります。 ステートメントを再実行した後でもエラーが発生する場合は、DBCC CHECKDB を使用してデータベースの構造の整合性を確認するか、またはサーバーを再起動して、メモリ内のデータ構造体が破損していないことを確認します。 <日付> <時刻> spid <3624id> <> <> 詳細については、SQL Server エラーログを確認してください。 通常、アサーションエラーはソフトウェアバグまたはデータの破損が原因で発生します。 データベースが破損していないかどうかを確認するには、DBCC CHECKDB の実行を検討します。 セットアップ時に Microsoft にダンプを送信することに同意した場合は、ミニダンプが Microsoft に送信されます。 更新プログラムは、最新の Service Pack または QFE のテクニカルサポートから提供されている場合があります。 <日付> <時刻> Spid<ID> AlwaysOn 可用性グループデータベース ' <データベース名> ' のデータ移動が次の理由で中断されました: "system" (ソース ID 2;ソース文字列: ' SUSPEND_FROM_REDO ')。 データベースでデータの移動を再開するには、データベースを手動で再開する必要があります。 可用性データベースを再開する方法については、「SQL Server Books Online」を参照してください。 <の日付> <時刻> Spid<id> エラー : 3313、レベル:21、状態: 2 ID. <> <データベース名> ' で1786:4978584:74 ログに記録された操作のやり直し中にエラーが発生しました。 通常、特定のエラーは、Windows イベントログサービスでエラーとして記録されています。 完全なバックアップからデータベースを復元するか、データベースを修復します。 <Date> <time> SPID<id> ALTER DB param オプション: RESUME<Date> <>> <0 spid> id <database Name> ' のデータ移動は再開されました。 これは情報メッセージだけです。 ユーザー操作は必要ありません。 <の 日付> <時間> spid<ID> データベースのデータベース 名 <、AlwaysOn 可用性グループの状態変更については、Nonqualified トランザクションがロールバックされています。 推定ロールバック完了: 100%。 これは情報メッセージだけです。 ユーザー操作は必要ありません。 <の 日付> <時刻> spid<ID> セカンダリデータベース ' <データベース名> ' (レプリカ ID: {bbdedecb-f26b-47e9-9e7d-7c22f99edb23} の可用性レプリカで、プライマリデータベースが終了しています。 これは情報メッセージだけです。 ユーザー操作は必要ありません。 <の日付> <時刻> spid<id>データベース名 <>の <> <データベース名> '> <2 "の> の回復を行うことはできません (約781秒が経過したまま)。 フェーズ1/3 これは情報メッセージだけです。 ユーザの操作は必要ありません...
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。
Sql server 2012 SP2 の累積更新プログラム 6( SQL server 2012 SP1 の累積更新プログラム 16 )
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
詳細情報
セカンダリレプリカの読み取りアクセス権が変更されたときに、前の問題が発生することがあります。次の2つの方法を使用して、セカンダリレプリカの可用性データベースの読み取りアクセスを設定することができます。
-
[可用性グループの変更] コマンドを使用して、読み取りアクセスを設定します。
ALTER AVAILABILITY GROUP [AGName]MODIFY REPLICA ON N'<SRV>' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = NO))
-
SQL Server Management Studio (SSMS) のオブジェクトエクスプローラーで設定を変更して、読み取りアクセスを設定します。
-
サーバーに接続し、[AlwaysOn 可用性] フォルダーを開きます。
-
[可用性グループ] フォルダーを開きます。
-
[可用性] グループを右クリックし、[ プロパティ] を選択します。
-
セカンダリレプリカの [読み取り可能なセカンダリ] プロパティを [ いいえ] に変更して、[ Ok]をクリックします。
-
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。