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 來解決「徵狀」一節中所述的問題。