A Microsoft distribui as correções do Microsoft SQL Server 2008 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 lançamento de correção SQL Server 2008.

Sintomas

Considere o seguinte cenário.

  • Tem uma consulta que utiliza a função ROW_NUMBER juntamente com uma junção exterior esquerda no Microsoft SQL Server 2008.

  • Cria uma declaração SELECT que utiliza a consulta como subloteia e que devolve linhas únicas utilizando a palavra-chave DISTINCT.

  • Execute esta declaração SELECT.

Neste cenário, poderá receber um resultado incorreto. A junta exterior esquerda é incorretamente ignorada.Nota Para obter mais informações sobre como reproduzir esta questão, consulte a subsecção "Passos para reproduzir esta questão" na secção "Mais informações".

Resolução

Informação de 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 SQL Server 2008 R2, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

2489376 Pacote de atualização cumulativa 6 para SQL Server 2008 R2 Nota Como as construçõ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 lançamento de correção R2008 do SQL Server 2008. Recomendamos que considere aplicar o mais recente lançamento de correção que contém este 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:

981356 O SQL Server 2008 R2 constrói que foram lançados após o lançamento do SQL Server 2008 R2

Pacote de serviço SQL Server 2008 1

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

2413738 Pacote de atualização cumulativo 11 para SQL Server 2008 Service Pack 1Nota Como as construçõ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 lançamento de correção SQL Server 2008. A Microsoft recomenda que considere aplicar o mais recente lançamento de correção que contém este 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:

970365 O SQL Server 2008 constrói que foram lançados após o lançamento do SQL Server 2008 Service Pack 1 Os hotfixes do Microsoft SQL Server 2008 são criados para pacotes específicos de serviços sql Server. Tem de aplicar um hotfix SQL Server 2008 Service Pack 1 a uma instalação do SqL Server 2008 Service Pack 1. Por predefinição, qualquer hotfix que seja fornecido num pacote de serviços SQL Server está incluído no próximo pacote de serviços sql Server.

Pacote de serviço SQL Server 2008 2

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

2467239 Pacote de atualização cumulativo 2 para SQL Server 2008 Service Pack 2Nota Como as construçõ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 lançamento de correção SQL Server 2008. A Microsoft recomenda que considere aplicar o mais recente lançamento de correção que contém este 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:

2402659 O SQL Server 2008 constrói que foram lançados após o lançamento do SQL Server 2008 Service Pack 2 Os hotfixes do Microsoft SQL Server 2008 são criados para pacotes específicos de serviços sql Server. Tem de aplicar um hotfix SQL Server 2008 Service Pack 2 a uma instalação do SQL Server 2008 Service Pack 2. Por predefinição, qualquer hotfix que seja fornecido num pacote de serviços SQL Server está incluído no próximo pacote de serviços sql Server.

Estado

A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".

Mais Informações

Passos para reproduzir esta questão

  1. Executar as seguintes declarações. Estas declarações criam duas tabelas e inserem alguns dados nas tabelas.

    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)
  2. Executar a seguinte declaração. Esta afirmação utiliza a função ROW_NUMBER juntamente com uma junta exterior esquerda.

    select a1, row_number() over (partition by a1 order by a1) as a3from Aleft join B ON A.a1 = B.b1
  3. Executar a seguinte declaração. Esta declaração utiliza a consulta no passo 2 como subquery:

    select distinct a1, a3from (      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

NotaA consulta no passo 3 devolve um resultado incorreto quando este problema ocorre.

Referências

Para obter mais informações sobre a função ROW_NUMBER e as juntas exteriores, visite os seguintes websites da Microsoft Developer Network (MSDN):

Para obter mais informações sobre o Modelo de Manutenção Incremental para O Servidor SQL, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

935897 Um Modelo de Manutenção Incremental está disponível na equipa do SQL Server para entregar hotfixes para problemas relatadosPara obter mais informações sobre o esquema de nomeação para atualizações do SQL Server, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

822499Novo esquema de nomeação para pacotes de atualização de software do Microsoft SQL ServerPara obter mais informações sobre a terminologia da atualização do software, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

824684Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.