FIX: UNION 查詢會傳回內部查詢處理器錯誤訊息 8623

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

286255
本文已封存。本文係以「現狀」提供且不會再更新。
Bug #: 351259 (SHILOH_BUGS)
徵狀
查詢陳述式可能會失敗與錯誤訊息 8623,如果符合下列條件:
  • 查詢使用 UNION 子句。

  • 其中一個 SELECT 陳述式 UNION 查詢中有參照到透過 IN 子句的子查詢的 WHERE 子句。

  • SQL Server 查詢最佳化器選擇迴圈聯結來解析查詢。
錯誤訊息的完整文字是:
伺服器: 訊息 8623,層級 16 狀態 1,線條 1 內部查詢處理器錯誤: 查詢處理器無法產生查詢計劃。 如需詳細資訊,請聯絡您的主要支援提供者。
解決方案

服務套件資訊

如果要解決這個問題,取得最新的 Service Pack,Microsoft SQL Server 2000。如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
290211如何取得最新的 Service Pack,SQL Server 2000

Hotfix 資訊

Microsoft 提供支援的 Hotfix。不過,此 Hotfix 旨在修正本文中所述隨問題。只會發生此特定問題的系統套用此 Hotfix。

如果此 Hotfix 可供下載,您可在本知識庫文件的頂端找到「 可用的 Hotfix 下載 」區段。如果沒有出現此區段,將要求提交到 Microsoft 客戶服務及支援],以取得該 Hotfix。

附註如果發生其他問題,或如果需要任何疑難排解,您可能必須建立個別的服務要求。和此 Hotfix 無關的額外支援問題適用一般的支援費用。如需 Microsoft 客戶服務支援部門電話號碼的完整清單或要建立個別的服務要求,請造訪下列 Microsoft 網站:附註「 下載 Hotfix 」 表單會顯示此 Hotfix 會出現,以供使用的語言。如果您沒有看到您的語言,是因為此 Hotfix 是不適用您的語言。此修正程式的英文版應該具有下列檔案屬性或更新版本:
   Date         Time     Version    Size      File name      Platform   -------------------------------------------------------------------   01/13/2001   12:52a   8.00.240   7446589   Sqlservr.exe   Intel				
注意: 由於檔案相依性最新版 Hotfix 或包含上述檔案的功能也可能會包含其他檔案。
其他可行方案
如果要解決這個問題:
  • 重寫查詢陳述式,並使用而非 IN 子句子查詢的聯結。

    -或者-

  • 您可以使用 OPTION 最佳化提示來強制執行雜湊等位。在 < 其他相關資訊 > 一節中的範例查詢會變更為:

    SELECT P.EMP_NO, N.ADJ_SCON  FROM   BATCH_EMPEE P, EMPLOYEE E, NI_CONDITION N  WHERE  E.EMP_NO = P.EMP_NO AND         N.EMP_NO = E.EMP_NO AND         P.JOB_ID = 25 AND         N.PAYRUN_NO = 0  UNION  SELECT P.EMP_NO, ''  FROM   BATCH_EMPEE P, EMPLOYEE E  WHERE  E.EMP_NO = P.EMP_NO AND         P.JOB_ID = 25 AND         E.EMP_NO NOT IN             (SELECT EMP_NO FROM NI_CONDITION WHERE PAYRUN_NO = 0)  OPTION (HASH UNION)					
狀況說明
Microsoft 已確認此選項以在 SQL Server 2000 中有問題。 這個問題已經先在 SQL Server 2000 Service Pack 1 中獲得修正。
其他相關資訊
下列查詢是可能會導致錯誤訊息 8623 陳述式的範例:
SELECT P.EMP_NO, N.ADJ_SCON  FROM   BATCH_EMPEE P, EMPLOYEE E, NI_CONDITION N  WHERE  E.EMP_NO = P.EMP_NO AND         N.EMP_NO = E.EMP_NO AND         P.JOB_ID = 25 AND         N.PAYRUN_NO = 0  UNION  SELECT P.EMP_NO, ''  FROM   BATCH_EMPEE P, EMPLOYEE E  WHERE  E.EMP_NO = P.EMP_NO AND         P.JOB_ID = 25 AND         E.EMP_NO NOT IN             (SELECT EMP_NO FROM NI_CONDITION WHERE PAYRUN_NO = 0)				
錯誤訊息 8623

警告:本文已自動翻譯

內容

文章識別碼:286255 - 最後檢閱時間:02/24/2014 03:24:04 - 修訂: 4.3

  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • kbnosurvey kbarchive kbmt kbautohotfix kbhotfixserver kbbug kbfix kbqfe KB286255 KbMtzh
意見反應