Microsoft 將 Microsoft SQL Server 2008 與 Microsoft SQL Server 2008 R2 發佈為一個可下載的檔案。 因為修正程式是累加的,所以每個新發行版本本都包含舊版 SQL Server 2008 或 SQL Server 2008 R2 修正版本中所包含的所有熱修復程式及所有安全性修正程式。
徵狀
請試想下列案例:
-
您執行的 Microsoft SQL Server 應用程式已設定分散式交易處理協調器(DTC)或多個作用中結果集(MARS)事務。 例如,您執行的是啟動 DTC 或 MARS 事務的 Microsoft SQL Server 整合服務。
-
您可以將 大量載入 作業作為 DTC 或 MARS 事務的一部分來啟動至目標資料表。 在大容量載入作業的大容量插入語句中,不會指定FIRE_TRIGGERS選項。注意: 大容量載入操作會執行大容量插入語句。
-
在執行第一個大容量載入作業時,您可以為另一個目標資料表啟動其他大容量載入作業或標準資料操作語言(DML)操作。 這些並行作業位於同一個 DTC 或 MARS 事務中。 .
在這種情況下,您可能會收到下列錯誤訊息:
錯誤:595,嚴重度:16,State:1Bulk 使用另一個未處理的結果集執行插入,就應該使用 XACT_ABORT。
原因
這個問題是因為 SQL Server 無法正確偵測 MARS 鎖死。 SQL Server 避免當您啟動 MARS 或 DTC 事務時可能發生的鎖死。 不過,SQL Server 不會檢查大容量插入語句中是否指定了FIRE_TRIGGERS選項。 注意
-
如需有關如何避免在 SQL Server 中出現 MARS 鎖死的詳細資訊,請參閱 Microsoft 開發人員網路(MSDN)網站上「SQL Server 2005 中的多個作用中結果集(MARS)」一節中的「交叉執行」一節。如需有關「SQL Server 2005 中的多個作用中結果集(MARS)」的詳細資訊,請造訪下列 Microsoft 開發人員網路(MSDN)網站:
解決方案
累積更新資訊
SQL Server 2008
此問題的修正程式是在 SQL Server 2008 Service Pack 1 的累積更新11中第一次發行。如需此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2413738 SQL Server 2008 Service Pack 1 的累積更新套件11注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 修正版本中所包含的所有修復程式及所有安全性修正程式。 Microsoft 建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
970365 在發行 SQL Server 2008 Service Pack 1 之後發行的 SQL Server 2008 組建 Microsoft SQL Server 2008 修復程式是針對特定的 SQL Server service pack 建立的。 您必須將 SQL Server 2008 Service Pack 1 修補程式套用至 SQL Server 2008 Service Pack 1 的安裝。 根據預設,SQL Server service pack 中提供的任何熱修復程式都包含在下一個 SQL Server service pack 中。
SQL Server 2008 R2
此問題的修正程式是在累積更新5中第一次發行。如需有關如何取得 SQL Server 2008 R2 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2438347 SQL Server 2008 R2 的累積更新套件5 注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
981356 在發行 SQL Server 2008 R2 之後發行的 SQL Server 2008 R2 組建
SQL Server 2008 Service Pack 2
此問題的修正程式是在 SQL Server 2008 的累積更新2(Service Pack 2)中第一次發行。如需此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2467239 SQL Server 2008 的累積更新套件 2 Service Pack 2注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 修正版本中所包含的所有修復程式及所有安全性修正程式。 Microsoft 建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2402659 在發行 SQL Server 2008 Service Pack 2 之後發行的 SQL Server 2008 組建 Microsoft SQL Server 2008 修復程式是針對特定的 SQL Server service pack 建立的。 您必須將 SQL Server 2008 Service Pack 2 修補程式套用至 SQL Server 2008 Service Pack 2 的安裝。 根據預設,SQL Server service pack 中提供的任何熱修復程式都包含在下一個 SQL Server service pack 中。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。
參考
如需 大量 INSERT 語句的詳細資訊,請造訪下列 MSDN 網站:
大量插入語句的一般資訊如需有關 OLE DB 目的地的詳細資訊,請造訪下列 MSDN 網站:
OLE DB 目的地的一般資訊如需有關 SQL Server 的增量服務模型的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
935897 您可以從 SQL Server 團隊取得增量服務模型,以提供已報告問題的修補程式如需 SQL Server 更新命名架構的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
822499Microsoft SQL Server 軟體更新套件的新命名架構如需軟體更新術語的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
824684 描述 Microsoft 軟體更新所使用的標準術語說明