Select the product you need help with
[PRB] 報告されない入出力の問題を検出するために追加された新しい SQL Server 診断機能文書番号: 826433 - 対象製品 目次現象
オペレーティング システム、ドライバ、またはハードウェアの問題により、書き込みの内容が失われた状態、または古い情報が読み取られた状態が発生すると、エラー 605、823、3448 など、データの整合性に関するエラー メッセージが表示されることがあります。次の例のようなエラー メッセージが表示されることがあります。
2003-07-24 16:43:04.57 spid63 Getpage: bstat=0x9, sstat=0x800, cache
2003-07-24 16:43:04.57 spid63 pageno is/should be: objid is/should be: 2003-07-24 16:43:04.57 spid63 (1:7040966)/(1:7040966) 2093354622/2039782424 2003-07-24 16:43:04.57 spid63 ... IAM indicates that page is allocated to this object 2003-07-24 16:52:37.67 spid63 エラー: 605、レベル: 21、状態: 1 2003-07-24 16:52:37.67 spid63 データベース 'pubs' で、オブジェクト 'titles' ではなくオブジェクト 'authors' に属する論理ページ (1:7040966) を取り出そうとしました。
2003-07-24 16:52:40.99 spid63 エラー: 3448、レベル: 21、状態: 1
2003-07-24 16:52:40.99 spid63 ログ レコード (63361:16876:181) を元に戻せませんでした。トランザクション ID (0:159696956)、ページ (1:7040977)、データベース 'pubs' (データベース ID 12)。 ページ情報 : LSN = (63192:958360:10)、型 = 2。ログ情報 : OpCode = 2、コンテキスト 1。
2003-07-09 14:31:35.92 spid66 エラー: 823、レベル: 24、状態: 2
2003-07-09 14:31:35.92 spid66 ファイル 'h:\sql\MSSQL\data\tempdb.mdf' のオフセット 0x00000016774000 に read 中に I/O エラー (bad page ID) が発生しました。 解決方法Service Pack の情報この問題を解決するには、Microsoft SQL Server 2000 用の最新の Service Pack を入手します。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。290211
(http://support.microsoft.com/kb/290211/
)
最新の SQL Server 2000 Service Pack の入手方法
ビルド情報マイクロソフトでは、追跡機能を拡張した SQL Server のビルドをリリースしました。導入された機能は、「現象」に記載されているエラー メッセージのトラブルシューティングに役立つように設計されています。オペレーティング システムやハードウェアに関連した問題が発生している可能性がない場合は、このビルドを適用する必要はありません。このビルド (英語版) のファイル属性は次表のとおりです。ただし、これより新しいビルドがリリースされている可能性もあります。各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。ファイル情報に表示される時刻は、ローカル時刻に変換されています。UTC とローカル時刻との時差を確認するには、コントロール パネルの [日付と時刻] の [タイム ゾーン] タブを使用してください。 日付 時刻 バージョン サイズ ファイル名 ------------------------------------------------------------------------- 2003/5/31 18:45 2000.80.818.0 78,400 バイト Console.exe 2003/6/25 01:01 2000.80.818.0 33,340 バイト Dbmslpcn.dll 2003/4/25 02:12 786,432 バイト Distmdl.ldf 2003/4/25 02:12 2,359,296 バイト Distmdl.mdf 2003/1/30 01:55 180 バイト Drop_repl_hotfix.sql 2003/6/23 22:40 2000.80.837.0 1,557,052 バイト Dtsui.dll 2003/6/23 22:40 2000.80.837.0 639,552 バイト Dtswiz.dll 2003/4/24 02:51 747,927 バイト Instdist.sql 2003/5/3 01:56 1,581 バイト Inst_repl_hotfix.sql 2003/2/8 06:40 2000.80.765.0 90,692 バイト Msgprox.dll 2003/4/1 02:07 1,873 バイト Odsole.sql 2003/4/5 01:46 2000.80.800.0 62,024 バイト Odsole70.dll 2003/5/7 20:41 2000.80.819.0 25,144 バイト Opends60.dll 2003/4/2 21:48 2000.80.796.0 57,904 バイト Osql.exe 2003/4/2 23:15 2000.80.797.0 279,104 バイト Pfutil80.dll 2003/5/22 22:57 19,195 バイト Qfe469571.sql 2003/7/11 17:04 1,084,147 バイト Replmerg.sql 2003/4/4 21:53 2000.80.798.0 221,768 バイト Replprov.dll 2003/2/8 06:40 2000.80.765.0 307,784 バイト Replrec.dll 2003/7/11 16:56 1,085,925 バイト Replsys.sql 2003/6/1 01:01 2000.80.818.0 492,096 バイト Semobj.dll 2003/5/31 18:27 2000.80.818.0 172,032 バイト Semobj.rll 2003/5/29 00:29 115,944 バイト Sp3_serv_uni.sql 2003/6/1 01:01 2000.80.818.0 4,215,360 バイト Sqldmo.dll 2003/4/7 17:44 25,172 バイト Sqldumper.exe 2003/3/19 18:20 2000.80.789.0 28,672 バイト Sqlevn70.rll 2003/7/2 00:18 2000.80.834.0 180,736 バイト Sqlmap70.dll 2003/2/8 06:40 2000.80.765.0 57,920 バイト Sqlrepss.dll 2003/8/1 00:50 2000.80.847.0 7,594,065 バイト Sqlservr.exe 2003/7/25 21:44 2000.80.845.0 590,396 バイト Sqlsort.dll 2003/2/8 06:40 2000.80.765.0 45,644 バイト Sqlvdi.dll 2003/6/25 01:01 2000.80.818.0 33,340 バイト Ssmslpcn.dll 2003/6/1 01:01 2000.80.818.0 82,492 バイト Ssnetlib.dll 2003/6/1 01:01 2000.80.818.0 25,148 バイト Ssnmpn70.dll 2003/6/1 01:01 2000.80.818.0 158,240 バイト Svrnetcn.dll 2003/5/31 18:59 2000.80.818.0 76,416 バイト Svrnetcn.exe 2003/4/30 23:52 2000.80.816.0 45,132 バイト Ums.dll 2003/7/2 00:19 2000.80.834.0 98,816 バイト Xpweb70.dll マイクロソフトでは、一部のハードウェア プラットフォームでは、めったに発生しないような入出力の負荷が高い状態で、読み取りの結果として古い情報が返されることがあることを確認しました。この拡張機能の診断結果で、古い情報が読み取られている状態や書き込みの内容が失われた状態が発生している可能性が示された場合は、すぐにハードウェア ベンダに連絡してサポートを受け、SQLIOStress ユーティリティを使用してテストを行ってください。 状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
この問題は、Microsoft SQL Server 2000 Service Pack 4 で最初に修正されました。 詳細
「現象」に記載されているエラー メッセージが表示され、ドライブの物理的な障害などの事象によってそのエラーを説明できない場合は、SQL Server、オペレーティング システム、ドライバ、およびハードウェアのあらゆる既知の問題点を確認します。このビルドで追加された新たな SQL Server 診断機能は、外部の入出力関連の問題を検出するのに役立ちます。新たな診断機能は、次の 2 つの状態に関する情報を提供するためのものです。
この種の問題に対する新しい診断機能を有効にするために、SQL Server にトレース フラグ 818 が追加されました。SQL Server を実行しているコンピュータの起動時のパラメータで -T818 を指定することによって、トレース フラグ 818 を設定できます。または、次のステートメントを実行することにより、トレース フラグを設定できます。 トレース フラグ 818 により、SQL Server を実行しているコンピュータによって実行され、成功した最新の 2,048 個の書き込み処理を追跡するために使用するメモリ内のリング バッファが有効になります。ただし、追跡される操作には並べ替えや作業用ファイルへの入出力は含まれません。エラー 605、823、または 3448 などのエラーが発生した場合、入力バッファのログ シーケンス番号 (LSN) の値が最新の書き込み処理の一覧と比較されます。読み取り処理中に取得される LSN が、書き込み処理中に指定された LSN よりも古い場合は、新しいエラー メッセージが SQL Server エラー ログに出力されます。SQL Server の書き込み処理の大部分は、チェックポイントまたは遅延書き込みとして行われます。遅延書き込みは、非同期入出力を使用するバックグラウンド タスクです。リング バッファの実装による処理負荷は軽いため、システムのパフォーマンスへの影響はほとんどありません。 次のメッセージは、WriteFile API 呼び出しまたは ReadFile API 呼び出しによって、SQL Server にエラーが通知されていないことを示しています。しかし、LSN を確認すると、値が正しくありません。
SQL Server has detected an unreported OS/hardware level read or write problem on Page (1:75007) of database 12
LSN returned (63361:16876:181), LSN expected (63361:16876:500) Contact the hardware vendor and consider disabling caching mechanisms to correct the problem エラー 605 またはエラー 823 が発生したトランザクションのロールバックを実行するとエラー 3448 が発生する場合、SQL Server を実行しているコンピュータではそのデータベースが自動的に閉じられ、そのデータベースを再度開いて復旧が試行されます。エラー 605 またはエラー 823 が発生した最初のページが不良ページと見なされ、SQL Server を実行しているコンピュータによってそのページが保持されます。復旧中 (再実行フェーズの前)、その不良ページの ID の読み取り時に、ページ ヘッダーに関する主な詳細情報が SQL Server エラー ログに出力されます。この情報は、書き込み内容の消失が発生したのか、古い情報の読み取りが行われたのかを区別するのに役立つため、この動作は重要です。 古い情報の読み取りが行われた場合は、次の 2 つの一般的な現象が発生することがあります。
場合によっては、問題はハードウェア キャッシュに限られた問題ではなく、フィルタ ドライバの問題である場合もあります。そのような場合は、バックアップ ユーティリティやウイルス対策ソフトウェアなど、使用しているソフトウェアを確認し、フィルタ ドライバに問題がないかどうかを調べます。 マイクロソフトでは、同様の古い結果の読み取り動作や書き込み内容の消失動作に起因するものの、エラー 605 またはエラー 823 の条件に該当しない場合があることも認識しています。ある事例では、ページが同じ LSN 値で 2 回更新されていました。Object ID と Page ID が適切で (ページが既にオブジェクトに割り当てられていて)、ページに変更が行われ、ディスクにフラッシュされる場合に、この現象が発生します。次のページの取得で古いイメージが返され、その後 2 回目の変更が行われます。SQL Server トランザクション ログを参照すると、同じ LSN 値でページが 2 回更新されています。この動作により、トランザクション ログ シーケンスを復元する際に問題が発生することや、外部キー エラーやデータ エントリの不足などの、データの一貫性の問題が発生することがあります。次のエラー メッセージはこの状態の一例を示しています。
エラー: 3456、レベル: 21、状態: 1 ログ レコード (276666:1664:19)、トランザクション ID (0:825853240)、ページ (1:1787100)、データベース 'authors' (7) を再実行できませんでした。 ページ: LSN = (276658:4501:9)、型 = 1。 ログ: OpCode = 4、 コンテキスト 2、PrevPageLSN: (275565:3959:31)。
いくつかの場合の詳細について、以下に一覧を示します。
マイクロソフトでは、次の並べ替え読み取りエラーの根本的な原因は、一般的に古い結果の読み取りや書き込み内容の消失にあることを認識しています。
2003-04-01 20:13:31.38 spid122 SQL Server Assertion: File: <p:\sql\ntdbms\storeng\drs\include\record.inl>, line=1447 Failed Assertion = 'm_SizeRec > 0 && m_SizeRec <= MAXDATAROW'.
2003-03-29 09:51:41.12 spid57 Sort read failure (bad page ID). pageid = (0x1:0x13e9), dbid = 2, file = e:\program files\Microsoft SQL Server\mssql\data\tempdb.mdf. Retrying. 2003-03-29 09:51:41.13 spid57 エラー: 823、レベル: 24、状態: 7 2003-03-29 09:51:41.13 spid57 ファイル 'e:\program files\Microsoft SQL Server\mssql\data\tempdb.mdf' のオフセット 0x000000027d2000 に read 中に I/O エラー (bad page ID) が発生しました。 * 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) 古い結果の読み取りや書き込み内容の消失により、データ ストレージが予期しない状態になるため、さまざまな現象が発生する可能性があります。データの消失が発生することもありますが、データの消失によって発生することが多いのは、エラー 644 またはエラー 625 など、インデックスの破損です。
エラー 644 重大度レベル 21 メッセージ テキスト、RID '%.*hs' のインデックス エントリが、インデックス ページ %S_PGID、インデックス ID %d、データベース '%.*ls' に見つかりませんでした。
エラー 625 重大度レベル 21 メッセージ テキスト、RID により、ページ %S_PGID から行を取得できません。slotid (%d) が無効です。 重要 : このような現象が発生する場合、またはキャッシュ メカニズムを無効にすると同様の問題が発生する可能性がある場合は、SQL Server の最新の更新および最新の SQL Server I/O Stress Simulator を入手することを強くお勧めします。また、オペレーティング システムおよび関連する構成を厳密に確認することも強くお勧めします。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。 231619
(http://support.microsoft.com/kb/231619/
)
[HOWTO] SQLIOStress ユーティリティを使用して、SQL Server などのディスク サブシステムに負荷をかける方法
プロパティ文書番号: 826433 - 最終更新日: 2006年3月24日 - リビジョン: 6.1
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。" | サポート技術情報の翻訳 |










