KB2705236 - 修正:當您在 SQL Server 2008、SQL Server 2008 R2 或 SQL Server 2012 中執行的查詢同時使用 PIVOT 運算子並使用平行處理原則時,會發生存取衝突

套用到
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Web

Microsoft 會發佈 Microsoft SQL Server 2008、Microsoft SQL Server 2008 R2 或 Microsoft SQL Server 2012 修正程式作為一個可下載的檔案。 由於修正程式是累積的,因此每個新版本都包含先前的 SQL Server 2008、SQL Server 2008 R2 或 SQL Server 2012 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。

症狀

假設您在 Microsoft SQL Server 2008、Microsoft SQL Server 2008 R2 或 Microsoft SQL Server 2012 的查詢執行計畫中執行的查詢使用平行處理原則。 查詢使用 PIVOT 或 UNPIVOT 關聯運算子,並在選取清單中至少包含一個參數。 在此情況下,執行查詢會失敗,並顯示下列錯誤訊息:

注意

Msg 0, Level 11, State 0, Line 0
目前命令發生嚴重錯誤。 如果有結果,應丟棄。

下列錯誤訊息也會記錄在 SQL Server 錯誤記錄檔中:

注意

<Date><Time> spid## SqlDumpExceptionHandler: 處理序 66 已產生嚴重例外狀況 c0000005 EXCEPTION_ACCESS_VIOLATION。 SQL Server 正在終止此程序。
<日期><時間> 伺服器錯誤:17310,嚴重性:20,狀態:1。
<日期><時間> 伺服器 來自 SPID 66 工作階段的使用者要求產生嚴重例外狀況。 SQL Server 正在終止此工作階段。 使用日誌目錄中產生的傾印與產品支援服務聯繫。

此外,sqlservr!CScaOp_Identifier::CScaOp_Identifier 班級。

原因

發生此問題是因為查詢最佳化工具嘗試將常數運算式放入 Exchange 運算子中的欄清單中。

解決方式

累積更新資訊

Microsoft SQL Server 2008 R2 Service Pack 2 (SP2 的累積更新 7)

此問題的修正程式最初在累積更新 7 中發行。 如需有關如何取得 SQL Server 2008 R2 Service Pack 2 累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

2844090 SQL Server 2008 R2 Service Pack 2 的累積更新套件 7 注意 由於這些組建是累積的,因此每個新發行的修正程式都包含先前的 SQL Server 2008 R2 Service Pack 2 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2730301 發行 SQL Server 2008 R2 Service Pack 2 之後所發行的 SQL Server 2008 R2 組建

SQL Server 2008 R2

此問題的修正程式最初在累積更新 14 中發行。 如需有關如何取得 SQL Server 2008 R2 的累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

2703280 SQL Server 2008 R2 的累積更新套件 14 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含先前的 SQL Server 2008 R2 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

981356 在 SQL Server 2008 R2 發行之後所發行的 SQL Server 2008 R2 組建 (機器翻譯)

SQL Server 2012

此問題的修正程式最初在 SQL Server 2012 的累積更新 2 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2703275 SQL Server 2012 累積更新套件 2 注意 由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和先前 2012 SQL Server修正程式版本中包含的所有安全性修正程式。 Microsoft 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2692828 SQL Server 2012 發行之後所發行的 SQL Server 2012 組建 您必須將 SQL Server 2012 Hotfix 套用至 SQL Server 2012 的安裝。

SQL Server 2008 Service Pack 3

此問題的修正程式最初在 SQL Server 2008 Service Pack 3 的累積更新 5 中發行。 如需有關如何取得此累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

2696626 SQL Server 2008 Service Pack 3 的累積更新套件 5 注意 由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和先前 SQL Server 修正程式版本中包含的所有安全性修正程式。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2629969 發行 SQL Server 2008 Service Pack 3 之後所發行的 SQL Server 2008 組建

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

如需有關 SQL Server 累加式服務模型的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

935897 來自 SQL Server 團隊之可傳遞解決回報問題的 Hotfix 的累加服務模型 (機器翻譯)
如需有關 SQL Server 更新命名架構的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

822499 Microsoft SQL Server 軟體更新套件的命名結構描述
如需有關軟體更新術語的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

824684 描述Microsoft軟體更新所使用的標準術語說明

因應措施

若要解決此問題,請使用下列其中一種方法,避免在查詢中執行平行處理:

  • 新增 MAXDOP 1 查詢提示選項。
  • 將 [最大平行處理度] 設定選項設為 1。

注意:使用上述任一因應措施時,效能會降低。 相反地,建議您套用此 Hotfix 來解決「徵狀」一節中所述的問題。