CORRECÇÃO: Consulta UNION devolve mensagem de erro interno consulta processador 8623

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

286255
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
N.º DE BUGS: 351259 (SHILOH_BUGS)
Sintomas
Uma instrução de consulta poderá falhar com a mensagem de erro 8623 se as seguintes condições se verificarem:
  • A consulta utiliza a cláusula UNION.

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

  • Optimizador de consultas do SQL Server escolhe uma associação de ciclo para resolver a consulta.
O texto completo da mensagem de erro é:
Servidor: Erro 8623, 16 de nível 1 de estado, linha 1 erro interno de processador de consultas: O processador de consultas não conseguiu produzir um plano de consulta. Contacte o fornecedor principal de suporte para mais informações.
Resolução

Informações sobre Service Packs

Para resolver este problema, obtenha o service pack mais recente do Microsoft SQL Server 2000. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
290211Como obter o service pack mais recente do SQL Server 2000

Informações sobre a correcção

Está disponível a partir da Microsoft uma correcção suportada. No entanto, esta correcção destina-se a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico.

Se a correcção está disponível para transferência, existe uma secção "denominada transferência de correcção disponível" na parte superior deste artigo da base de dados de conhecimento. Se esta secção não for apresentada, submeta um pedido para o serviço de cliente do Microsoft e suporte para obter a correcção.

Nota Se ocorram problemas adicionais ou se for necessária qualquer resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem esta correcção específica. Para obter uma lista completa dos números de telefone do suporte de cliente do Microsoft ou para criar um pedido serviço separado, visite o seguinte Web site da Microsoft: Nota O formulário "Transferência de correcção disponível" apresenta os idiomas para a qual a correcção está disponível. Se não vir o idioma, é porque uma correcção não está disponível para esse idioma.A versão inglesa desta correcção deverá ter os seguintes atributos de ficheiro ou posteriores:
   Date         Time     Version    Size      File name      Platform   -------------------------------------------------------------------   01/13/2001   12:52a   8.00.240   7446589   Sqlservr.exe   Intel				
Nota : devido a dependências de ficheiros, a correcção mais recente ou funcionalidade que contém os ficheiros anteriores poderão também conter ficheiros adicionais.
Como contornar
Para contornar este comportamento:
  • Reescreva a instrução de consulta e utilizar uma associação em vez da subconsulta cláusula IN.

    - ou -

  • Usar a dica de optimização OPTION para forçar uma união de hash. Alteraria a consulta de exemplo na secção "Mais informação" 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)					
Ponto Da Situação
Microsoft confirmou que este problema existe no SQL Server 2000. Este problema foi corrigido pela primeira vez no SQL Server 2000 Service Pack 1.
Mais Informação
A consulta seguinte é um exemplo de uma instrução que poderá conduzir 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)				
Mensagem de erro 8623

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 286255 - Última Revisão: 02/24/2014 05:57:55 - Revisão: 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 KbMtpt
Esta informação foi útil?