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

文章翻譯 文章翻譯
文章編號: 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 網站:
http://support.microsoft.com/contactus/?ws=support
附註「 下載 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)
				

屬性

文章編號: 286255 - 上次校閱: 2014年2月24日 - 版次: 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
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:286255
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com