KB2727322 - CORREÇÃO: resultados incorretos são retornados quando você executa uma consulta que usa paralelismo no plano de execução de consulta no SQL Server 2008, no SQL Server 2008 R2 ou no SQL Server 2012

Aplica-se A
SQL Server 2008 Service Pack 3 SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Web SQL Server 2008 Standard Edition for Small Business SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Enterprise Core SQL Server 2012 Web SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Web

A Microsoft distribui as correções do Microsoft SQL Server 2008 Service Pack 3 como um ficheiro transferível. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 Service Pack 3 corrigir lançamento.

Sintomas

Suponha que você execute uma consulta que usa paralelismo no plano de execução de consulta no SQL Server 2008, no SQL Server 2008 R2 ou no SQL Server 2012. O plano de consulta cumpre as seguintes condições:

  • o plano de execução da consulta contém um operador Bitmap e uma associação de hash ou uma associação de mesclagem.
  • O predicado hash join ou merge join contém uma comparação IS em colunas que podem ser NULL.

Neste cenário, a consulta devolve resultados incorrectos.

Causa

Esse problema ocorre porque o valor NULL é descartado quando SQL Server usa filtragem de bitmap em uma verificação de tabela ou uma verificação de índice.

Resolução

Informações de atualização cumulativa

Pacote de atualizações cumulativas 1 para SQL Server 2012 Service Pack 1

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 1. Para obter mais informações sobre como obter este pacote de atualização cumulativa para o SQL Server 2012 Service Pack 1, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2765331 Pacote de atualizações cumulativas 1 para SQL Server 2012 Service Pack 1Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2012 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2772858 As compilações SQL Server 2012 lançadas após o lançamento do SQL Server 2012 Service Pack 1

SQL Server 2008 R2 Service Pack 2

A correção para esse problema foi lançada pela primeira vez na Atualização Cumulativa 2 para SQL Server 2008 R2 Service Pack 2. Para mais informações sobre como obter este pacote de actualização cumulativa, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2740411 Pacote de Atualização Cumulativa 2 para SQL Server 2008 R2 Service Pack 2Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 R2 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2730301 As compilações SQL Server 2008 R2 lançadas após o lançamento do SQL Server 2008 R2 Service Pack 2

SQL Server 2008 R2 Service Pack 1

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 8. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008 R2 Service Pack 1, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2723743 Pacote de atualizações cumulativas 8 para SQL Server 2008 R2 SP1Nota: Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o SQL Server anterior 2008 R2 Service Pack 1 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2567616 As compilações do SQL Server 2008 R2 lançadas após o lançamento do SQL Server 2008 R2 SP1

SQL Server 2012

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 3 do SQL Server 2012. Para obter mais informações sobre este pacote de atualização cumulativa, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2723749 Pacote de atualizações cumulativas 3 para SQL Server 2012Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2012 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2692828 As compilações do SQL Server 2012 lançadas após o lançamento do SQL Server 2012 Tem de aplicar uma correção do SQL Server 2012 a uma instalação do SQL Server 2012.

SQL Server 2008 Service Pack 3

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 6 para SQL Server 2008 Service Pack 3. Para obter mais informações sobre este pacote de atualização cumulativa, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2715953 Pacote de atualizações cumulativas 6 para SQL Server 2008 Service Pack 3Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2629969 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 3 Os hotfixes do Microsoft SQL Server 2008 são criados para service packs SQL Server específicos. Tem de aplicar uma correção do SQL Server 2008 Service Pack 3 a uma instalação do SQL Server 2008 Service Pack 3. Por padrão, qualquer hotfix fornecido em um SQL Server service pack é incluído no próximo SQL Server service pack.

Estado

A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".

Solução

Para contornar este problema, evite utilizar paralelismo na consulta ao aplicar um dos métodos:

  • Adicione a opção de sugestão de consulta MAXDOP 1.
  • Defina a opção Grau Máximo de Paralelismo como 1.

Mais Informações

Para obter mais informações sobre associações hash paralelas, vá para o seguinte site MSDN Blogs:

Informações gerais sobre associações paralelas de hash Para obter mais informações sobre filtros de bitmap de execução de consulta, vá para o seguinte site da MSDN Blogs:

Informações gerais sobre filtros de mapa de bits de Execução de Consultas