I/O の問題が報告されない古いデータの読み取りまたは書き込みが失われる原因を検出するために追加された SQL Server の診断

BUG #: 470086 (SQL Server 8.0)

現象

エラー 605、823、3448 などのデータの整合性に関連するエラー メッセージが表示ことがある場合は、失われたオペレーティング システム、ドライバー、またはハードウェアの問題原因は、古くなった読み取り条件または条件を書き込み、3456。次の例のようなエラー メッセージが表示ことがあります。


2003-07-24 16:43:04.57 spid63 Getpage: bstat = 0x9、sstat = 0x800、キャッシュ
2003-07-24 16:43:04.57 spid63 pageno/する必要があります: オブジェクト id/する必要があります。
2003-07-24 16:43:04.57 spid63 (1:7040966)/(1:7040966) 2093354622/2039782424

2003-07-24 16:43:04.57 spid63.IAM は、そのページがこのオブジェクトに割り当てられていることを示します

2003-07-24 16:52:37.67 spid63 エラー: 605、レベル: 21、状態: 1
2003-07-24 16:52:37.67 spid63 が属するオブジェクトにオブジェクト 'titles' ' authors'、'pubs' データベースの論理ページ (1:7040966) を取得しようとすると.


2003-07-24 16:52:40.99 spid63 エラー: 3448、レベル: 21、状態: 1
2003-07-24 16:52:40.99 spid63 ページ (1:7040977)、データベース 'pubs' (データベース ID 12) でのトランザクション ID (元のログ レコード (63361:16876:181) に戻せませんでした。ページ情報: LSN = (63192:958360:10) 型 = 2 です。情報をログに記録: オペコード = 2、1 のコンテキスト。


2003-07-09 14:31:35.92 spid66 エラー: 823、レベル: 24、状態: 2
2003-07-09 14:31:35.92 spid66 I/O エラー (不適切なページ ID) のオフセットでは、ファイル 'h:\sql\MSSQL\data\tempdb.mdf' 0x00000016774000 の読み取り中に検出された.

2010-02-06 15:57:24.14 spid17s エラー: 3456、レベル: 21、状態: 1 です。
2010-02-06 15:57:24.14 spid17s は、ログ レコード (58997:5252:28) を再実行のトランザクション ID (0:109000187)、ページ (1:480946)、データベース '指定' (データベース ID 17) ないです。ページ: LSN = (58997:5234:17) の種類 = 3 です。ログ: オペコード = 2、5 のコンテキスト PrevPageLSN: (58997:5243:17)。データベースのバックアップから復元するか、データベースを修復します。

詳細

マイクロソフト SQL Server 2000 Service Pack 4 で始まる拡張機能を導入してこれらの診断プログラムは、SQL Server 2005 およびそれ以降のバージョンの製品の一部をされています。これらの機能は、I/O に関連する外部の問題と、「現象」で説明するエラー メッセージのトラブルシューティングを検出するよう設計されています。

「現象」に記載されているエラー メッセージが表示される物理ドライブの障害などイベントを説明できない場合は、SQL Server、オペレーティング システム、ドライバー、およびハードウェアに関する既知問題を確認します。診断は、次の 2 つの条件に関する情報を提供してみてください。

  • 書き込み内容の消失: WriteFile API が、オペレーティング システム、ドライバー、またはキャッシュ コント ローラーの正常な呼び出しに正しくフラッシュされませんデータ物理メディアにも、SQL Server が書き込みが成功したことを通知します。

  • 古い情報の読み取り: ReadFile API が、オペレーティング システム、ドライバー、またはキャッシュ コント ローラーの正常な呼び出しを誤って返しますデータの以前のバージョン。

たとえば、マイクロソフトは、シナリオとして成功すると、 WriteFile API の呼び出しが返されますですが、同じデータ ・ ブロックの即時に、正常な読み取りが可能性があります、ハードウェアのリード ・ キャッシュに格納されているデータを含む、以前のデータを返しますを認識しています。場合によっては、この問題は、リード ・ キャッシュの問題のために発生します。以外の場合、物理ディスクにデータの書き込みが実際に書き込まれます。

この種の問題に対する新しい診断機能を有効にするには、SQL Server にトレース フラグ 818 が追加されます。スタートアップ パラメーターとしてトレース フラグ 818 を指定することができます-T818、SQL Server、またはを実行しているコンピューターのことが次のステートメントを実行します。

DBCC TRACEON(818, -1)


トレース フラグ 818 が成功した最新の 2,048 個の書き込みしない並べ替えとワークファイルの I/o を含め、SQL Server を実行しているコンピューターによって実行される操作の追跡に使用されるメモリ内のリング バッファーを使用できます。エラー 605、823、または 3448 などのエラーが発生すると、最新の書き込み一覧を受信するバッファーのログ シーケンス番号 (LSN) の値が比較されます。読み取り操作中に取得される LSN が書き込み操作中に指定されたものよりも古い場合は、新しいエラー メッセージが SQL Server エラー ログに記録されます。ほとんどの SQL Server の書き込み操作が発生するは、チェックポイントとログに出力します。遅延書き込みは、非同期 I/O を使用するバック グラウンド タスクです。リング バッファーの実装では軽量で、ほとんどのシステムに影響を与えるパフォーマンスを行うことです。

次のメッセージは、SQL Server がWriteFile API の呼び出しまたはReadFile API の呼び出しからエラーを受信しなかったことを示します。ただし、LSN を確認、ときに値が正しかった。


報告されない OS とハードウェア レベルの読み取りまたは 12 のデータベースのページ (1:75007) の問題を作成する SQL Server が検出されました

LSN が返されます (63361:16876:181)、LSN が必要 (63361:16876:500)

ハードウェア ベンダーに問い合わせて、問題を解決するのにはキャッシュ メカニズムを無効にすることを検討してください。


SQL Server 2005 以降とエラー メッセージが報告されます。


SQL Server には、論理整合性ベース I/O エラーが検出されました: 古い情報の読み取り。<< 読み取りと書き込み >> ファイル << ファイル名 >> でオフセット << 物理オフセット >> からのデータベース id << DBID >> << PAGEID >> のページの中に発生しました。SQL Server エラー ログまたはシステム イベント ログに追加のメッセージより詳細な情報を提供することができます。これは、データベースの整合性を掌握し、直ちに修正する必要があります重大なエラー状態です。データベース全体の整合性チェック (DBCC CHECKDB) を完了します。は多くの要因によってこのエラーを発生することができます詳細については、SQL Server オンライン ブックを参照してください。


この時点では、リード ・ キャッシュには、ページの以前のバージョンが含まれているか、データが物理ディスクに正しく書き込まれていません。(書き込み内容の消失または古い情報の読み取り) どちらの場合では、SQL Server は、オペレーティング システム、ドライバー、またはハードウェアの各層に外部的な問題を報告します。

エラー 605 またはエラー 823 のあるトランザクションをロールバックしようとするとエラー 3448 が発生した場合に自動的に SQL Server を実行するコンピューター データベースを閉じを開き、データベースを復旧しようとしています。エラー 605 またはエラー 823 が発生している最初のページが不良ページと見なされ、ページの id は、SQL Server を実行しているコンピューターで保持されます。(再実行フェーズ) の前に、の回復中に不良ページの id を読み取り、ページ ヘッダーに関する主な詳細情報が SQL Server エラー ログに記録します。書き込み内容の消失や古い情報の読み取りのシナリオを区別するに役立つために、このアクションが重要です。

古い情報の読み取りでは次の 2 つの一般的な動作を確認できます。
前の段落で説明した動作は、読み取りキャッシュの問題を示すし、頻繁にリード ・ キャッシュを無効にすることによって解決します。通常、前の段落で説明する操作では、キャッシュの無効化、物理メディアが正しく更新されていることを表示するに発生する読み取りが正しくを強制します。キャッシュ メカニズムが強制的にフラッシュした後でも再読み取りされたページに、データの以前のバージョンがまだの場合、書き込み内容の消失が発生します。

場合によっては、この問題はハードウェア キャッシュを特定できないがあります。フィルター ドライバーに問題がある可能性があります。このような場合は、ソフトウェアは、バックアップ ユーティリティ、ウイルス対策ソフトウェアなどを確認し、フィルター ドライバーに問題がないかを参照してください。

マイクロソフトは、エラー 605 またはエラー 823 の条件を満たしていませんが、同じ古い情報の読み取りや書き込み内容の消失動作に起因する条件を認識してもいます。場合によっては、2 回更新されていますが、同じ lsn 値には、ページが表示されます。この現象は、オブジェクト IDには、ページの IDは、適切で (ページのオブジェクトに既に割り当てられている)、および変更がページに加え、ディスクにフラッシュする場合に発生する可能性があります。次のページの取得、古いイメージを取得して、2 番目の変更が行われます。SQL Server トランザクション ログは、ページが同じ LSN 値で 2 つの時刻が更新されたことを示しています。トランザクション ログ シーケンスを復元しようとするときにこのアクションが問題になる、または外部キー エラーやデータ エントリの不足など、データ整合性の問題です。次のエラー メッセージは、次の条件の 1 つの例を示しています。


エラー: 3456、レベル: 21、状態: 1 でしたトランザクション ID (0: 825853240)、ページ (1:1787100)、'authors' (7) のデータベースのログ レコード (276666:1664:19)、やり直しできません。ページ: LSN = (276658:4501:9) 種類 = 1。ログ: オペコード = 4、2 のコンテキスト PrevPageLSN: (275565:3959:31).


いくつかのシナリオは次のリストにさらに詳しく記載されています。

  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Table created or truncated
    4Inserts (Pages allocated)
    5Newly allocated page written to disk by Lazy Writer
    6Select from table – Scans IAM chain, newly allocated page read back from disk (LRU | HASHED = 0x9 in getpage message), encounters Error 605 - Invalid Object ID
    7Rollback of transaction initiated

  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Page Modification
    4Page written to disk by Lazy Writer
    5Page read in for another modification (stale image returned)
    6Page Modified for a second time but because of stale image does not see first modification
    7Rollback – Fails – Transaction Log shows two different log records with the same PREV LSN for the page

SQL Server の並べ替え' ' 演算子では、I/O 活動状況、主に、 tempdbデータベースからを実行します。これらの I/O 操作が、バッファー入出力操作に似ています。ただし、これら既によう設計されている読み取りの再試行ロジックを使用して、同様の問題を解決しようとしています。この資料で説明したその他の診断は、これらの I/O 操作には適用されません。

マイクロソフトは次の並べ替えの根本的な原因の障害は、一般に、古い情報の読み取りや書き込み内容の消失が読むことを認識してください。


2003-04-01 20:13:31.38 spid122 SQL Server アサーション: ファイル: < p:\sql\ntdbms\storeng\drs\include\record.inl >、行 = 1447 失敗したアサーション = ' m_SizeRec > 0 & & m_SizeRec < = MAXDATAROW' です。

2003-03-29 09:51:41.12 spid57 並べ替え読み取りに失敗しました (不適切なページ ID) です。pageid (0x1:0x13e9) を =、dbid = 2、ファイル = e:\program を指定して SQL Server\mssql\data\tempdb.mdf。再試行しています。

2003-03-29 09:51:41.13 spid57 エラー: 823、レベル: 24、状態: 7
2003-03-29 09:51:41.13 spid57 I/O エラー (不適切なページ ID) は、ファイル 'e:\program を指定して SQL Server\mssql\data\tempdb.mdf' で 0x000000027d2000 のオフセットでの読み取り中に検出された.

* 00931097 の Module(sqlservr+00531097) (utassert_fail + 000002E3)
* 005B1DA8 Module(sqlservr+001B1DA8) (RecBase::Resize+00000091)
* 00407EE7 Module(sqlservr+00007EE7) (RecBase::LocateColumn+00000012)
* 00852520 の Module(sqlservr+00452520) (mergerow + 000000A4)
* 008522B3 Module(sqlservr+004522B3) (merge_getnext+00000285)
* 0085207D Module(sqlservr+0045207D) (mergenext+0000000D)
* 004FC5FB Module(sqlservr+000FC5FB) (getsorted+00000021)

これらの並べ替えのエラーが発生した、読み取りキャッシュ メカニズムを無効にすると、 tempdbをキャッシュされないローカル ドライブに移動することにより、問題が頻繁に解決されています。

古い情報の読み取りや書き込み内容の消失の結果が予期しないデータの記憶域になるため、さまざまな動作が表示される場合があります。欠落データとして表示されるが、エラー 644 またはエラー 625 など、インデックスの破損として不足しているデータの一般的な効果の一部が表示されます。


644 のエラーの重大度レベル 21 メッセージ テキスト可能性がありますが見つかりませんインデックス エントリ RID の '%。 * h のインデックス ページ %s_pgid、インデックス ID %1!、データベース' %。 * %1! '' です。

エラー 625 重大度レベル 21 メッセージのテキストは、スロット id (%1!) が無効であるために、ページ %s_pgid で RID から行を取得できません。


行数のカウント操作を行った後、行の欠落が報告されています。この問題は、書き込み内容の消失が原因で発生します。おそらくページは、クラスター化インデックス ページ チェインにリンクすると想定されていました。書き込みは、物理的に失われますが、データも失われます。

重要 キャッシュ メカニズムを無効にすることと同様の問題の疑いのある場合は、強くお勧めする、動作が発生する場合は、SQL Server および最新の SQL Server I/O 負荷シミュレータの最新の更新プログラムを入手します。オペレーティング システムおよびその関連付けられている構成の厳密なレビューを実行することを強くお勧めします。

注 マイクロソフトでは、そのまれ、大量の I/O 負荷の場合は、ハードウェア プラットフォームによって返すことができます古い情報の読み取りを確認しています。拡張の診断が可能な古いことを示す場合は、読み取り内容が失われた条件を記述をすぐに、ハードウェアの製造元にお問い合わせください、 SQLIOSimユーティリティを使用してテストします。

SQL Server には、 SQL Server I/O の信頼性プログラムの必要条件の下で説明したように、安定したメディアへの配信の保証をサポートするためにシステムが必要です。SQL Server データベース エンジンの入力と出力の要件の詳細については、 Microsoft SQL Server データベース エンジンの入出力要件を参照してください。

この問題に関する追加情報を以下に示します。

  • 使用し、 ReadFile 、 WriteFile API の例として。この現象は、散布図および収集活動にも適用されます。

  • きたこれらの問題のいくつかの最近 (2003 年 7 月) Compaq と HP のベースのシステムでは、インテル スマート SCSI および HP SANsin の追加の基に Raid コント ローラーです。

  • きたようにこの問題を SQL Server 2000 Service Pack 3 (760) の多くは、それ以降のビルドと似た状況で SQL Server 2000 SP3 の前に見てきた。

  • SQLIOStress は、これらの条件を検索することでより積極的な更新されています。

  • SQL Server 開発スタッフはこれらの問題の検出に役立つその他のユーティリティを更新しています。

作成者:
ライター: haribaskar.janarthanam@wipro.com
Tech Reviewer: bobward。mikezw です。ericchr Srikant.Jahangirdar@wipro.com (KSM Id: Partners\v 9srikantj)
エディター: v-sedmun です。vernettp

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

フィードバックをお送りいただきありがとうございます!

×