CORREÇÃO: Resultados incorretos quando você executa uma consulta JOIN completo que usa a cláusula CROSS APPLY no SQL Server 2008 R2 ou no SQL Server 2012

Traduções deste artigo Traduções deste artigo
ID do artigo: 2800797 - Exibir os produtos aos quais esse artigo se aplica.
A Microsoft distribui correções do Microsoft SQL Server 2008 R2 Service Pack 2 (SP2) como um arquivo para download. Como as correções são cumulativas, cada versão nova contém todos os hotfixes e correções de segurança que foram incluídas com o anterior SQL Server 2008 R2 Service Pack 2 corrigir lançamento.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Você pode receber resultados incorretos ao executar uma consulta no Microsoft SQL Server 2008 R2 SP2 ou no Microsoft SQL Server 2012 quando as seguintes condições forem verdadeiras:
  • A consulta usa uma cláusula CROSS APPLY sobre o resultado de uma cláusula JOIN completo .
  • Os dados da tabela são fornecidos ao chamar uma função definida pelo usuário com valor de tabela na cláusula JOIN completo .
  • A função aceita um nome de coluna como um parâmetro e retorna os resultados como uma tabela.
Por exemplo, você pode executar uma consulta semelhante à seguinte:
SELECT * FROM tablename 
CROSS APPLY (
    SELECT * FROM
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1 
    FULL JOIN 
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2 
    ON s1.nodeName = s2.nodeName
    ) s 
Observação Esse problema não ocorre no Microsoft SQL Server 2012.

Resolução

Informações da atualização cumulativa

Atualização cumulativa 7 para SQL Server 2012

A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 7. Para obter mais informações sobre como obter esse pacote de atualização cumulativa para SQL Server 2012, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2823247 Pacote de atualizações cumulativas 7 para SQL Server 2012
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior 2012 SQL Server corrigir lançamento. Recomendamos que você considere a aplicação a versão mais recente de correção que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2692828 O SQL Server 2012 compilações disponibilizadas após o lançamento do SQL Server 2012

Atualização cumulativa 3 para SQL Server SP1 de 2012

A correção para esse problema foi lançada em 3 de atualização cumulativa. Para obter mais informações sobre como obter esse pacote de atualização cumulativa para o SQL Server 2012 SP1, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2812412 Pacote de atualizações cumulativas 3 para SQL Server 2012 Service Pack 1
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e correções de segurança que foram incluídas com o SP1 de 2012 de SQL Server anteriores corrigir lançamento. Recomendamos que você considere a aplicação a versão mais recente de correção que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2772858 O SQL Server 2012 compilações lançadas após o lançamento do Service Pack 1 do SQL Server 2012

Atualização cumulativa 5 para SQL Server 2008 R2 SP2

A correção para esse problema foi lançada em 5 de atualização cumulativa. Para obter mais informações sobre como obter esse pacote de atualização cumulativa para o SQL Server 2008 R2 SP 2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2797460 Pacote de atualizações cumulativas 5 para SQL Server 2008 R2 Service Pack 2
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e correções de segurança que foram incluídas com o anterior SQL Server 2008 R2 SP 2 corrigir lançamento. Recomendamos que você considere a aplicação a versão mais recente de correção que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2730301 O SQL Server 2008 R2 compilações lançadas após o lançamento do SQL Server 2008 R2 Service Pack 2

Situação

A Microsoft confirmou que este é um problema nos produtos Microsoft que estão listados na seção "Aplica-se a".

Como Contornar

Para contornar esse problema, use a cláusula Completo MERGE JOIN em vez de uma cláusula JOIN completo .

Por exemplo, você pode alterar a consulta que é mencionada na seção "Sintomas" para que a consulta é semelhante ao seguinte:
SELECT * FROM tablename 
CROSS APPLY (
    SELECT * FROM
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1 
    FULL MERGE JOIN 
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2 
    ON s1.nodeName = s2.nodeName
    ) s

Mais Informações

Para obter mais informações sobre como usar a cláusula CROSS APPLY , vá para o seguinte site da Microsoft TechNet:
Informações gerais sobre como usar a cláusula CROSS APPLY

Propriedades

ID do artigo: 2800797 - Última revisão: segunda-feira, 15 de abril de 2013 - Revisão: 3.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2008 R2 Service Pack 2
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
Palavras-chave: 
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2800797 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: 2800797

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