[FIX] SQL Server の一時テーブルにデータを挿入するクエリを実行すると、エラー 605 およびエラー 824 が表示される

文書翻訳 文書翻訳
文書番号: 960770 - 対象製品
Bug: #50003826 (SQL Hotfix)
マイクロソフトでは、Microsoft SQL Server 2008 の修正を 1 つのダウンロード可能なファイルとして配布しています。修正は累積的であるため、新しいリリースの修正には、以前のリリースの SQL Server 2008 の修正に含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれます。
すべて展開する | すべて折りたたむ

目次

現象

Microsoft SQL Server 2008 で一時テーブルにデータを挿入するクエリを実行します。この INSERT ステートメントには、同じ一時テーブルを参照するサブクエリが含まれています。クエリを実行すると、次のようなエラー メッセージが表示されることがあります。
メッセージ 605、レベル 21、状態 3、行 1
データベース 2 の論理ページ (1:225) のフェッチに失敗しました。この論理ページは、アロケーション ユニット 504403158513025024 ではなく、281474980315136 に所属しています。

クエリを再度実行すると、次のような別のエラー メッセージが表示されます。

メッセージ 824、レベル 24、状態 2、行 1
SQL Server で、一貫性に基づいた論理 I/O エラーが検出されました: 正しくないチェックサム (必要なチェックサム: 0x50758180、実際のチェックサム: 0x15658bfc)。このエラーは、ファイル 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\tempdb.mdf' のオフセット 0x000000002a0000 にあるデータベース ID が 2 のページ (1:336) の read 中に発生しました。SQL Server エラー ログまたはシステム イベント ログ内の別のメッセージで詳細情報が報告されることもあります。このエラー状態は深刻で、データベースの整合性を損なう可能性があるので、すぐに解決する必要があります。完全なデータベース一貫性確認 (DBCC CHECKDB) を実行してください。このエラーは、多くの要因が原因で発生する可能性があります。詳細については、SQL Server Books Online を参照してください。
場合によっては、次のようなエラー メッセージが表示されることもあります。
メッセージ 601、レベル 12、状態 3、プロシージャ procedure name、行 line number
データが移動されたので NOLOCK を使用したスキャンは続行できませんでした。

以下に、上記のエラーを発生させる可能性があるクエリ構成の例を示します。
insert #table1
select s.col1, s.col2
from #table2 s inner loop join #table1 t
on s.col3 = t.col3

解決方法

この問題の修正は、累積的な更新プログラム 3 で初めてリリースされました。SQL Server 2008 の累積的な更新プログラム パッケージの入手方法の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
960484 SQL Server 2008 の累積的な更新プログラム パッケージ 3 について
: ビルドは累積的であるため、新しくリリースされる修正プログラムには、以前にリリースされた SQL Server 2008 の修正プログラムに含まれていたすべての修正プログラムおよびセキュリティ修正プログラムが含まれています。この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
956909 SQL Server 2008 以降にリリースされた SQL Server 2008 のビルド
この累積的な更新プログラム パッケージのインストール後、トレース フラグ 4135 を有効にする必要があります。これを行うには、-T4135 スタートアップ パラメーターを追加するか、個別のセッションで dbcc traceon(4135) ステートメントを使用します。

回避策

この問題を回避するには、クラスター化された主キーと ID プロパティを持つ列を一時テーブルに追加します。たとえば、次のステートメントを実行して一時テーブルを変更します。
ALTER TABLE #TempTable
ADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

状況

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

詳細

エラー メッセージ 824 または 605 が発生した場合であっても、データベースは破損しません。また、これらのエラー メッセージは tempdb データベースからページを参照します。

変更されたファイルの関連情報、およびこのサポート技術情報の資料に記載されている修正プログラムが含まれる累積的な更新プログラム パッケージを適用するための必要条件の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
960484 SQL Server 2008 の累積的な更新プログラム パッケージ 3 について

SQL Server 2008 R2 BPA の情報

SQL Server 2008 R2 ベスト プラクティス アナライザー (SQL Server 2008 R2 BPA) は、累積的な更新プログラムまたトレース フラグが有効ではない状況を検出するルールを提供し、この問題に対処します。SQL Server 2008 R2 BPA は、SQL Server 2008 と SQL Server 2008 R2 の両方をサポートしています。

BPA ツールを実行して "Database Engine - tempdb errors fix or trace flag missing" 警告が表示された場合は、この修正を有効にするように構成されている SQL Server とトレース フラグのバージョンを確認する必要があります。

参照

元に戻す全体を表示する
ルール ソフトウェアルール タイトルルール識別子
SQL Server 2008 R2 BPA ルールtempdb errors fix or trace flag missingRID3808

: トレース フラグ 4135 またはトレース フラグ 4199 を有効にすると、この修正を有効にすることができます。トレース フラグ 4135 は、SQL Server 2008 の累積的な更新プログラム パッケージ 3 で導入されました。トレース フラグ 4135 は、SQL Server 2008 Service Pack 1、SQL Server 2008 Service Pack 2、および SQL Server 2008 R2 でも使用できます。トレース フラグ 4199 は、SQL Server 2008 の累積的な更新プログラム パッケージ 7、SQL Server 2008 Service Pack 1 の累積的な更新プログラム パッケージ 7、および SQL Server 2008 R2 の累積的な更新プログラム パッケージ 1 で導入されました。トレース フラグ 4199 の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。?

974006 以前は複数のトレース フラグの下で行われた複数のクエリ オプティマイザーの変更を制御するためにトレース フラグ 4199 が追加

この問題に対する修正には、修正を有効にするための特定の修正プログラム ビルドとトレース フラブの組み合わせが含まれているため、さまざまなシナリオと、各シナリオで推奨される対策を示すために、以下の表で説明します。

元に戻す全体を表示する
現在の SQL ビルドの範囲トレース フラグ 4135 がオンであるかどうかトレース フラグ 4199 がオンであるかどうかSQL ビルドの更新プログラムが必要であるかどうか推奨されるビルドトレース フラグ 4135 の更新プログラムが必要であるかどうか推奨されるトレース フラグ補足
10.00.1600.22 <= ビルド < 10.00.1787.00

ビルド 10.00.1600.22 = SQL Server 2008
ビルド 10.00.1787.00 = SQL Server 2008 の累積的な更新プログラム パッケージ 3
いいえいいえはい10.0.1787.00はい4135
いいえはいはい10.0.1818.00いいえ
はいいいえはい10.0.1787.00いいえ
はいはいはい10.0.1787.00いいえ
10.00.1787.00 <= ビルド < 10.00.1818.00

ビルド 10.00.1787.00 = SQL Server 2008 の累積的な更新プログラム パッケージ 3
ビルド 10.00.1818.00 = SQL Server 2008 の累積的な更新プログラム パッケージ 7
いいえいいえいいえはい4135
いいえはいはい10.0.1818.00はい4135一方 (1 つ) の更新プログラムで十分
はいいいえいいえいいえ
はいはいいいえいいえ
10.00.1818.00 <= ビルド < 10.00.2531.00

ビルド 10.00.1818.00 = SQL Server 2008 の累積的な更新プログラム パッケージ 7
ビルド 10.00.2531.00 = SQL Server 2008 Service Pack 1
いいえいいえいいえはい4199
いいえはいいいえいいえ
はいいいえいいえいいえ
はいはいいいえいいえ
10.00.2531.00 <= ビルド < 10.00.2766.00

ビルド 10.00.2531.00 = SQL Server 2008 Service Pack 1
ビルド 10.00.2766.00 = SQL Server 2008 Service Pack 1 の累積的な更新プログラム パッケージ 7
いいえいいえいいえはい4135
いいえはいはい10.0.2766.00はい4135一方 (1 つ) の更新プログラムで十分
はいいいえいいえいいえ
はいはいいいえいいえ
10.00.2766.00 <= ビルド < 最新の SQL 2008 のビルド

ビルド 10.00.2766.00 = SQL Server 2008 Service Pack 1 の累積的な更新プログラム パッケージ 7
いいえいいえいいえはい4199
いいえはいいいえいいえ
はいいいえいいえいいえ
はいはいいいえいいえ
10.50.1600.01 <= ビルド < 10.50.1702.00

10.50.1600.01 = SQL Server 2008 R2
10.50.1702.00 = SQL Server 2008 R2 の累積的な更新プログラム パッケージ 1
いいえいいえいいえはい4135
いいえはいはい10.50.1702.00はい4135一方 (1 つ) の更新プログラムで十分
はいいいえいいえいいえ
はいはいいいえいいえ
10.50.1702.00 <= ビルド < 最新の SQL 2008 R2 のビルド

10.50.1702.00 = SQL Server 2008 R2 の累積的な更新プログラム パッケージ 1
いいえいいえいいえはい4199
いいえはいいいえいいえ
はいいいえいいえいいえ?
はいはいいいえいいえ?



関連情報

SQL Server 2008 以降にリリースされたビルドの一覧を参照するには、以下のサポート技術情報番号をクリックしてください。
956909 SQL Server 2008 以降にリリースされた SQL Server 2008 のビルド
SQL Server の増分サービス モデルの関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
935897 報告された問題に対する修正プログラムを提供する SQL Server チームの増分サービス モデル (ISM) について
SQL Server の更新プログラムの命名方式の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
822499 Microsoft SQL Server ソフトウェア更新プログラム パッケージの新しい命名方式
ソフトウェア更新プログラムに関する用語の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
824684 マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。

プロパティ

文書番号: 960770 - 最終更新日: 2011年5月16日 - リビジョン: 2.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
キーワード:?
kbexpertiseadvanced kbfix kbsurveynew kbqfe KB960770
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com