Microsoft は、Microsoft SQL Server 2008 SP2 または Microsoft SQL Server 2008 R2 の修正プログラムを1つのダウンロード可能なファイルとして配布します。 修正プログラムは累積的であるため、新しいリリースごとに、以前の SQL Server 2008 SP2 または SQL Server 2008 R2 fix release に含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。
現象
次のような状況で問題が発生します。
-
Microsoft SQL Server 2008 または Microsoft SQL Server 2008 R2 に2つのインデックスがあるテーブルまたはビューがある。 最初のインデックスには、AFTER トリガーがあります。 ただし、2番目のインデックスには AFTER トリガーがありません。
-
2番目のインデックスの一部のレコードには、行のバージョン情報が含まれています。 たとえば、以前はスナップショット分離機能を有効にして、その行バージョンを有効にしています。
-
テーブルまたはビューに対して DML クエリを実行しようとしている。
このシナリオでは、次のいずれかの問題が発生する可能性があります。
-
アサーションエラーが発生し、次のエラーが SQL Server エラーログに記録されます。
Date Timespid # エラー: 17066、Severity:16、State: 1。日付時刻Spid # SQL Server アサーション: File: Pageref、line = 1332 Failed Assertion = ' 0 = = pagefull '。 このエラーは、タイミングに関連している可能性があります。 ステートメントの再実行後もエラーが発生する場合は、DBCC CHECKDB を使用してデータベースの構造の整合性を確認するか、またはサーバーを再起動して、メモリ内のデータ構造体が破損していないことを確認します。日付時刻spid # エラー: 3624、レベル:20、状態: 1。日付時刻 > spid # システムアサーションのチェックに失敗しました。 詳細については、SQL Server エラーログを確認してください。 通常、アサーションエラーはソフトウェアバグまたはデータの破損が原因で発生します。 データベースが破損していないかどうかを確認するには、DBCC CHECKDB の実行を検討します。 セットアップ時に Microsoft にダンプを送信することに同意した場合は、ミニダンプが Microsoft に送信されます。 更新プログラムは、最新の Service Pack または QFE のテクニカルサポートから提供されている場合があります。
-
クエリが間違った結果を返します。
-
データ破損の問題が発生します。
原因
この問題は、SQL Server クエリオプティマイザーの問題が原因で発生します。 トリガーを生成する DML クエリを実行すると、無効な行バージョンのフラグが設定され、SQL Server ストレージエンジンは古い行バージョン情報を使用します。 そのため、「現象」セクションで説明されている問題が発生します。
解決方法
累積的な更新プログラムの情報
SQL Server 2008 R2
この問題の修正プログラムは、累積的な更新プログラム10で最初にリリースされました。SQL Server 2008 R2 用の累積的な更新プログラムパッケージの入手方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2591746 SQL Server 2008 R2 の累積的な更新プログラムパッケージ10 注: ビルドは累積的であるため、各新しい修正プログラムには、以前の SQL Server 2008 R2 fix release に含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
981356 SQL Server 2008 R2 のリリース後にリリースされた SQL Server 2008 R2 ビルド
SQL Server 2008 R2 Service Pack 1
この問題の修正プログラムは、SQL Server 2008 R2 Service Pack 1 の累積更新プログラム3で最初にリリースされました。この累積的な更新プログラムパッケージの入手方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2591748 SQL Server 2008 R2 Service Pack 1 の累積更新プログラムパッケージ3注: ビルドは累積的であるため、各新しい修正プログラムには、以前の SQL Server 2008 R2 fix release に含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2567616 SQL Server 2008 R2 Service Pack 1 がリリースされた後にリリースされた SQL Server 2008 R2 ビルド
SQL Server 2008 Service Pack 2 (SP2) 累積更新プログラムパッケージ6
この問題の修正プログラムは、累積的な更新プログラム6で最初にリリースされました。この累積的な更新プログラムパッケージを SQL Server 2008 Service Pack 2 で入手する方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2582285 SQL Server 2008 Service Pack 2 の累積更新プログラムパッケージ6注: ビルドは累積的であるため、各新しい修正プログラムには、以前の SQL Server 2008 Service Pack 2 fix release に含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2402659 SQL Server 2008 Service Pack 2 がリリースされた後にリリースされた SQL Server 2008 ビルド
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。