徵狀
當您執行包含大型物件(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 在這種情況下, SELECT 語句會在其他執行緒嘗試更新相同的 XML 資料行時執行。 這種行為可能會造成資料損毀。 此外,當您在損毀的 XML 資料行上執行任何讀取和寫入作業時,您會收到下列其中一則錯誤訊息:
-
XML 資料類型已損毀。
-
發生意外的檔案結束。
注意事項
-
在並行載入作業期間通常會發生這個問題。
-
當您使用記錄讀取器代理程式,從屬於事務性複製的發佈專案清單中的資料表讀取損毀的 XML 資料時,您會收到下列錯誤訊息:
XML 資料類型已損毀。 (來源: MSSQLServer,錯誤號碼:6611)
原因
之所以會發生此問題,是因為 lob 資料資料行上的鎖定是在從資料庫資料行複製到 LOB 資料類型變數之前就已放開。 任何併發查詢都可以在複製程式完成時,更新相同的 LOB 資料。 因此,資料會損毀。
解決方案
累積更新資訊
SQL Server 2012 累積更新7
此問題的修正程式是在累積更新7中第一次發行。如需如何取得此 SQL Server 2012 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2823247 SQL Server 2012 的累積更新套件7注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2012 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
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 修正版本中所包含的所有修復程式及所有安全修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2567616 在發行 SQL Server 2008 R2 Service Pack 1 之後發行的 SQL Server 2008 R2 組建
SQL Server 2008 累積更新 10 Service Pack 3
此問題的修正程式是在累積更新10中第一次發行。如需有關如何取得 SQL Server 2008 Service Pack 3 的累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2814783 SQL Server 2008 的累積更新套件 10 Service Pack 3注意: 因為組建是累加的,所以每個新的修正版本都包含舊版 SQL Server 2008 Service Pack 3 修復程式版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
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 SQL Server 2008 R2 的累積更新套件5(R2 S2008 R2 SP2)注意: 因為組建是累加的,所以每個新的修正版本都包含所有的修復程式,以及舊版 SQL Server 2008 R2 SP2 修正版本中所包含的所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2730301 在發行 SQL Server 2008 R2 Service Pack 2 之後發行的 SQL Server 2008 R2 組建
狀態
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。