CORRECÇÃO: Consulta UNION retorna mensagem de erro processador de consulta interna 8623

Traduções deste artigo Traduções deste artigo
ID do artigo: 286255 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
BUG #: 351259 (SHILOH_BUGS)
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Uma instrução de consulta pode falhar com mensagem de erro 8623 se as seguintes condições são atendidas:
  • A consulta usa a cláusula UNION.

  • Uma das instruções SELECT em consulta UNION possui uma cláusula WHERE que se refere a uma subconsulta através de uma cláusula IN.

  • O otimizador do SQL Server escolhe uma associação de loop para resolver a consulta.
O texto completo da mensagem de erro é:
Servidor: Mensagem 8623, nível 16, estado 1, linha 1 erro interno do processador consulta: O processador de consultas não pôde produzir um plano de consulta. Entre em contato com seu provedor de suporte para obter mais informações.

Resolução

Informações sobre o service pack

Para resolver esse problema, obtenha o service pack mais recente para o Microsoft SQL Server 2000. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211Como obter o service pack mais recente para o SQL Server 2000

Informações sobre o hotfix

Um hotfix suportado está disponível no Microsoft. No entanto, esse hotfix destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico.

Se o hotfix está disponível para download, há uma seção "Download de Hotfix disponível" na parte superior neste artigo da Base de dados de Conhecimento. Se esta seção não for exibido, envie uma solicitação para suporte e atendimento ao cliente Microsoft para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para obter uma lista completa de números de telefone de suporte e Atendimento Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação O formulário "Download de Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma, é porque um hotfix não está disponível para esse idioma.A versão em inglês dessa correção deve ter os seguintes atributos de arquivo ou posteriores:
   Date         Time     Version    Size      File name      Platform
   -------------------------------------------------------------------

   01/13/2001   12:52a   8.00.240   7446589   Sqlservr.exe   Intel

				
Observação : devido a dependências do arquivo, o hotfix mais recente ou o recurso que contém os arquivos anteriores pode também conter arquivos adicionais.

Como Contornar

Para contornar esse comportamento:
  • Reescreva a instrução de consulta e use uma associação em vez da subconsulta da cláusula IN.

    - ou -

  • Use a dica de otimizador OPTION para forçar uma união de hash. A consulta de exemplo na seção "Mais informações" muda para:

    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)
    					

Situação

A Microsoft confirmou que este é um problema no SQL Server 2000. Esse problema foi corrigido primeiro no SQL Server 2000 Service Pack 1.

Mais Informações

A consulta a seguir é um exemplo para uma instrução que pode levar a mensagem de erro 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)
				

Propriedades

ID do artigo: 286255 - Última revisão: segunda-feira, 24 de fevereiro de 2014 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • 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
Palavras-chave: 
kbnosurvey kbarchive kbmt kbautohotfix kbhotfixserver kbbug kbfix kbqfe KB286255 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 286255

Submeter comentários

 

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