A Microsoft distribui correções do Microsoft SQL Server 2008 como um arquivo para download. 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 corrigir lançamento.
Sintomas
Considere o seguinte cenário.
- Tem uma consulta que utiliza a função ROW_NUMBER juntamente com uma associação externa à esquerda no Microsoft SQL Server 2008.
- Você cria uma instrução SELECT que usa a consulta como uma subconsulta e que retorna linhas exclusivas usando a palavra-chave DISTINCT.
- Execute esta instrução SELECT.
Nesse cenário, você pode receber um resultado incorreto. A associação externa à esquerda é ignorada incorretamente.
Observação Para obter mais informações sobre como reproduzir esse problema, consulte a subseção "Etapas para reproduzir esse problema" na seção "Mais informações".
Resolução
Informações sobre a atualização cumulativa
SQL Server 2008 R2
A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 6. Para obter mais informações sobre como obter este pacote de atualização cumulativa para o SQL Server 2008 R2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2489376 pacote de atualização cumulativa 6 para SQL Server 2008 R2 Observação Como as compilações são cumulativas, cada novo lançamento 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 obter mais informações, clique no número abaixo para ler o artigo da Base de Dados de Conhecimento Microsoft:
981356 As compilações do SQL Server 2008 R2 lançadas após o SQL Server 2008 R2
SQL Server 2008 Service Pack 1
A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 11 para SQL Server 2008 Service Pack 1.
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:
2413738 Pacote de atualizações cumulativas 11 para SQL Server 2008 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 2008 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo da Base de Dados de Conhecimento Microsoft:
970365 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 1 Os hotfixes do Microsoft SQL Server 2008 são criados para service packs específicos do SQL Server. Você deve aplicar um hotfix do SQL Server 2008 Service Pack 1 para uma instalação do SQL Server 2008 Service Pack 1. Por padrão, qualquer hotfix fornecido em um service pack do SQL Server está incluído no próximo service pack do SQL Server.
SQL Server 2008 Service Pack 2
A correção para esse problema foi lançada pela primeira vez na Atualização Cumulativa 2 para SQL Server 2008 Service Pack 2. 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:
2467239 Pacote de atualizações cumulativas 2 para SQL Server 2008 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 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo da Base de Dados de Conhecimento Microsoft:
2402659 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 2 Os hotfixes do Microsoft SQL Server 2008 são criados para service packs específicos do SQL Server. Você deve aplicar um hotfix do SQL Server 2008 Service Pack 2 para uma instalação do SQL Server 2008 Service Pack 2. Por padrão, qualquer hotfix fornecido em um service pack do SQL Server está incluído no próximo service pack do SQL Server.
Status
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Mais informações
Passos para reproduzir este problema
Execute as seguintes instruções. Estas instruções criam duas tabelas e inserem alguns dados nas mesmas.
create table A (a1 int) create table B (b1 int) insert into A values(1) insert into B values(1) insert into B values(1)Execute a seguinte instrução. Esta instrução utiliza a função ROW_NUMBER juntamente com uma associação externa à esquerda.
select a1, row_number() over (partition by a1 order by a1) as a3 from A left join B ON A.a1 = B.b1Execute a seguinte instrução. Esta instrução utiliza a consulta no passo 2 como uma subconsulta:
select distinct a1, a3 from ( select a1, row_number() over (partition by a1 order by a1) as a3 from A left join B ON A.a1 = B.b1 ) as x
Observação A consulta na etapa 3 retorna um resultado incorreto quando esse problema ocorre.
Referências
Para obter mais informações sobre a função ROW_NUMBER e associações externas, visite os seguintes sites da Microsoft Developer Network (MSDN):
Para obter mais informações sobre o modelo de serviço incremental para SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
935897 Um modelo de serviços incrementais disponível da equipe do SQL Server para fornecer hotfixes para problemas relatados
Para obter mais informações sobre o esquema de nomenclatura para atualizações do SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
822499 Novo esquema de nomenclatura para pacotes de atualização de software do Microsoft SQL ServerPara obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684 Descrição da terminologia padrão usada para descrever as atualizações de software da Microsoft