メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

現象

Microsoft SQL Server 2008、SQL server 2012、SQL Server 2008 R2、または SQL Server 2014 で、テーブルに対してNOLOCKヒントと共に複雑な更新ステートメントを実行すると、非クラスター化インデックスが壊れることがあります。 さらに、次のエラーメッセージが SQL Server のエラーログに記録される場合があります。

<date><Time> spid # エラー: 8646、Severity:21、状態: 1。 <日付><spid # データベース '> DATABASENAME <' で、テーブル2102402659のインデックス ID 3 のインデックスエントリが見つかりません。 示されているインデックスが破損しているか、現在の更新プランで問題が発生しています。 DBCC CHECKDB または DBCC CHECKTABLE を実行します。 問題が解決されない場合は、製品サポートにお問い合わせください。 <日付><時間> spid # を使用して、 <の日付><spid # * * Dump THREAD-Spid = 0, EC = 0x0000000BD70624C0> date<time><spid # * * * Y:\MSSQL\MSSQL10. に送信されました。MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 Date><Time> spid # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <Timedate><time> spid # * <date><> <><><><spid # *> date<><> spid # * cperindexmetaqs:: @ Date<Time><spid # * cperindexの場合::-----: errorabort-インデックスの破損><0日付><時刻> spid # *

注:NOLOCKヒントをステートメント内のソーステーブルに適用することができます。 ただし、ステートメント内のテーブルのターゲットとして NOLOCK ヒントを適用することはできません。

原因

この問題は、クエリによって同じ値が複数回読み取られた場合に、 NOLOCK ヒントによってクエリが誤ってテーブルの値を読み取るために発生します。

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

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

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

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

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

×