現象
大規模なオブジェクト (LOB) データを含むクエリを実行して、Microsoft SQL Server 2008、microsoft sql Server 2012、または Microsoft SQL Server 2008 R2 の Transact-sql 変数に読み込むと、データの破損が発生します。 たとえば、次のクエリを実行して、データベースの列の XML データを XML 変数にコピーします。 Declare @OUTXML as XMLSELECT @OUTXML = DataXml FROM Table_1 WHERE id=1 この状況では、他のスレッドが同じ XML 列を更新しようとしたときに SELECT ステートメントが実行されます。 この動作により、データが壊れることがあります。 また、破損した XML 列で読み取りと書き込みの操作を実行すると、次のいずれかのエラーメッセージが表示されます。
-
XML データ型が破損しています。
-
ファイルの終わりが予期せずに発生しました。
注意事項
-
この問題は通常、同時読み込み操作が多い場合に発生します。
-
ログリーダーエージェントを使用して、トランザクションレプリケーションのパブリケーションアーティクルリストの一部であるテーブルから破損した XML データを読み取ると、次のエラーメッセージが表示されます。
XML データ型が破損しています。 (ソース: MSSQLServer, エラー番号: 6611)
原因
この問題が発生するのは、lob データ列がデータベース列から LOB データ型の変数にコピーされる前に、lob データ列のロックが解除されるためです。 コピー処理中にコピープロセスが完了する前に、同時クエリで同じ LOB データを更新できます。 そのため、データの破損は発生します。
解決方法
累積的な更新プログラムの情報
SQL Server 2012 の累積更新プログラム7
この問題の修正プログラムは、累積的な更新プログラム7で最初にリリースされました。SQL Server 2012 用の累積更新プログラムパッケージの入手方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2823247 累積的な更新プログラムパッケージ 7 (SQL Server 2012)注: ビルドは累積的であるため、それぞれの新しい修正プログラムには、以前の SQL Server 2012 fix release に含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2692828 SQL Server 2012 がリリースされた後にリリースされた SQL Server 2012 ビルド
SQL Server 2008 R2 Service Pack 1 の累積更新プログラム12
この問題の修正プログラムは、累積更新プログラム12で最初にリリースされました。SQL Server 2008 R2 Service Pack 1 用の累積更新プログラムパッケージの入手方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2828727 SQL Server 2008 R2 Service Pack 1 の累積更新プログラムパッケージ12注: ビルドは累積的であるため、各新しい修正プログラムには、以前の SQL Server 2008 R2 Service Pack 1 修正プログラムに含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2567616 SQL Server 2008 R2 Service Pack 1 がリリースされた後にリリースされた SQL Server 2008 R2 ビルド
SQL Server 2008 Service Pack 3 の累積更新プログラム10
この問題の修正プログラムは、累積的な更新プログラム10で最初にリリースされました。SQL Server 2008 Service Pack 3 用の累積更新プログラムパッケージの入手方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2814783 SQL Server 2008 Service Pack 3 の累積的な更新プログラムパッケージ10注: ビルドは累積的であるため、それぞれの新しい修正プログラムには、以前の SQL Server 2008 Service Pack 3 fix release に含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2629969 SQL Server 2008 Service Pack 3 がリリースされた後にリリースされた SQL Server 2008 ビルド
SQL Server 2008 R2 Service Pack 2 (SP2) の累積更新プログラム5
この問題の修正プログラムは、累積的な更新プログラム5で最初にリリースされました。この累積的な更新プログラムパッケージを SQL Server 2008 R2 S2008 R2 SP2 で入手する方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2797460 累積的な更新プログラムパッケージ 5 (SQL Server 2008 R2 S2008 R2 SP2)注: ビルドは累積的であるため、各新しい修正プログラムには、以前の SQL Server 2008 R2 S2008 R2 SP2 修正プログラムに含まれていたすべてのホットフィックスとすべてのセキュリティ修正が含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2730301 SQL Server 2008 R2 Service Pack 2 がリリースされた後にリリースされた SQL Server 2008 R2 ビルド
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。