Microsoft 會以一個可下載的檔案形式發佈 Microsoft SQL Server 2008 Service Pack 3 修正程式。 由於修正程式是累積的,因此每個新版本都包含所有 Hotfix 和先前的 SQL Server 2008 Service Pack 3 修正程式版本中包含的所有安全性修正程式。
症狀
假設您在 SQL Server 2008、SQL Server 2008 R2 或 SQL Server 2012 的查詢執行計畫中執行的查詢使用平行處理原則。 查詢計劃符合下列條件:
- 查詢執行計劃包含點陣圖運算子和雜湊聯結或合併聯結。
- 雜湊聯結或合併聯結述詞包含可以為 Null 的欄的 IS 比較。
在此案例中,查詢會傳回不正確的結果。
原因
發生此問題的原因是當 SQL Server 在資料表掃描或索引掃描中使用點陣圖篩選時,會捨棄 NULL 值。
解決方式
累積更新資訊
SQL Server 2012 Service Pack 1 的累積更新套件 1
此問題的修正程式最初在累積更新 1 中發行。 如需有關如何取得 SQL Server 2012 Service Pack 1 累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
2765331 SQL Server 2012 Service Pack 1 的累積更新套件 1 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,來自上一個 SQL Server 2012 修正程式版本。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2772858 在 SQL Server 2012 Service Pack 1 發行之後所發行的 SQL Server 2012 組建 (英文)
SQL Server 2008 R2 Service Pack 2
此問題的修正程式最初在 SQL Server 2008 R2 Service Pack 2 的累積更新 2 中發行。 如需有關如何取得此累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
2740411 SQL Server 2008 R2 Service Pack 2 的累積更新套件 2 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,這些修正程式隨附於先前的 SQL Server 2008 R2 修正程式版本。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2730301 發行 SQL Server 2008 R2 Service Pack 2 之後所發行的 SQL Server 2008 R2 組建
SQL Server 2008 R2 Service Pack 1
此問題的修正程式最初在累積更新 8 中發行。 如需有關如何取得此 SQL Server 2008 R2 Service Pack 1 累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
2723743 SQL Server 2008 R2 SP1 的累積更新套件 8 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含先前的 SQL Server 2008 R2 Service Pack 1 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2567616 SQL Server 2008 R2 SP1 發行之後所發行的 SQL Server 2008 R2 組建
SQL Server 2012
此問題的修正程式最初在 SQL Server 2012 的累積更新 3 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2723749 適用於 SQL Server 2012 的累積更新套件 3 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,這些都包含在先前的 SQL Server 2012 修正程式版本中。 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 的累積更新 6 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2715953 SQL Server 2008 Service Pack 3 累積更新套件 6 注意 由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,這些修正程式都包含在上一個 SQL Server 2008 修正程式版本中。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2629969 發行 SQL Server 2008 Service Pack 3 之後所發行的 SQL Server 2008 組建Microsoft會為特定 SQL Server Service Pack 建立 SQL Server 2008 Hotfix。 您必須將 SQL Server 2008 Service Pack 3 Hotfix 套用至 SQL Server 2008 Service Pack 3 的安裝。 預設情況下,SQL Server Service Pack 中提供的任何 Hotfix 都會包含在下一個 SQL Server Service Pack 中。
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
因應措施
若要解決此問題,請套用下列其中一種方法,避免在查詢中使用平行處理原則:
- 新增 MAXDOP 1 查詢提示選項。
- 將 [平行處理度上限] 選項設為 1。
更多資訊
如需有關平行雜湊聯結的詳細資訊,請前往下列 MSDN 部落格網站:
關於平行雜湊聯結的一般資訊 如需有關查詢執行點陣圖篩選的詳細資訊,請前往下列 MSDN 部落格網站: