Microsoft 會以一個可供下載的檔案形式發佈 Microsoft SQL Server 2008 和 Microsoft SQL Server 2008 R2 修正程式。 由於修正程式是累積的,因此每個新版本都包含先前的 SQL Server 2008 或 SQL Server 2008 R2 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。
症狀
請考慮以下案例:
您執行的Microsoft SQL Server應用程式具有分散式交易協調器 (DTC) 或多個作用中結果集 (設定了 MARS) 交易。
例如,您執行啟動 DTC 或 MARS 交易的 Microsoft SQL Server Integration Services。
您可以開始對目標資料表進行大量載入作業作為 DTC 或 MARS 交易的一部分。 未在 BULK LOAD 作業的 BULK INSERT 陳述式中指定 FIRE_TRIGGERS 選項。
注意:BULK LOAD 作業會執行 BULK INSERT 陳述式。
在第一個 BULK LOAD 作業執行時,您可以為另一個目標表啟動另一個 BULK LOAD 作業或標準資料操作語言 (DML) 作業。 這些平行作業會在相同的 DTC 或 MARS 交易中進行。 .
在此案例中,您可能會收到下列錯誤訊息:
注意
錯誤:595,嚴重性:16,狀態:1
包含另一個未處理結果集的 [大量插入] 應該在 XACT_ABORT 開啟的情況下執行。
原因
發生此問題是因為 SQL Server 未正確偵測到 MARS 鎖死。 SQL Server 可避免當您啟動 MARS 或 DTC 交易時發生鎖死。 不過,SQL Server不會檢查是否已在 BULK INSERT 陳述式中指定FIRE_TRIGGERS選項。
注意
如需有關如何避免 SQL Server 中發生 MARS 鎖死的詳細資訊,請參閱 MSDN) 網站 Microsoft Developer Network (上的「Multiple Active Result Sets (MARS) in SQL Server 2005」一文的「交錯執行」一節。
如需有關「Multiple Active Result Sets (MARS) in SQL Server 2005」一文的詳細資訊,請造訪下列 Microsoft Developer Network (MSDN) 網站:
「2005 年 SQL Server (MARS) 的多重作用中結果集」一文
解決方式
累積更新資訊
SQL Server 2008
此問題的修正程式最初在 SQL Server 2008 Service Pack 1 的累積更新 11 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2413738 SQL Server 2008 Service Pack 1 累積更新套件 11 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,這些修正程式都包含在上一個 SQL Server 2008 修正程式版本中。 Microsoft 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
970365 發行 SQL Server 2008 Service Pack 1 之後所發行的 SQL Server 2008 組建Microsoft SQL Server會為特定 SQL Server Service Pack 建立 Hotfix。 您必須將 SQL Server 2008 Service Pack 1 Hotfix 套用至 SQL Server 2008 Service Pack 1 的安裝。 預設情況下,SQL Server Service Pack 中提供的任何 Hotfix 都會包含在下一個 SQL Server Service Pack 中。
SQL Server 2008 R2
此問題的修正程式最初在累積更新 5 中發行。 如需有關如何取得 SQL Server 2008 R2 的累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
2438347 SQL Server 2008 R2 的累積更新套件 5 注意:由於組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和先前 SQL Server 2008 R2 修正程式版本中包含的所有安全性修正程式。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
981356 在 SQL Server 2008 R2 發行之後所發行的 SQL Server 2008 R2 組建 (機器翻譯)
SQL Server 2008 Service Pack 2
此問題的修正程式最初在 SQL Server 2008 Service Pack 2 的累積更新 2 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2467239 SQL Server 2008 Service Pack 2 累積更新套件 2 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,這些修正程式都包含在上一個 SQL Server 2008 修正程式版本中。 Microsoft 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2402659 SQL Server 2008 Service Pack 2 發行之後所發行的 SQL Server 2008 組建Microsoft SQL Server會為特定 SQL Server Service Pack 建立 Hotfix。 您必須將 SQL Server 2008 Service Pack 2 Hotfix 套用至 SQL Server 2008 Service Pack 2 的安裝。 預設情況下,SQL Server Service Pack 中提供的任何 Hotfix 都會包含在下一個 SQL Server Service Pack 中。
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
參考資料
如需有關 BULK INSERT 陳述式的詳細資訊,請造訪下列 MSDN 網站:
關於 BULK INSERT 陳述式的一般資訊如需有關 OLE DB 目的地的詳細資訊,請造訪下列 MSDN 網站:
OLE DB 目的地的一般相關資訊如需有關 SQL Server 累加式服務模型的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
935897 來自 SQL Server 團隊之可傳遞解決回報問題的 Hotfix 的累加服務模型 (機器翻譯)
如需有關 SQL Server 更新命名架構的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
822499 Microsoft SQL Server 軟體更新套件的新命名架構如需有關軟體更新術語的詳細資訊,請按一下下面的文章編號,檢視「Microsoft知識庫」中的文章:
824684 描述Microsoft軟體更新所使用的標準術語說明