Iniciar sessão com a Microsoft
Iniciar sessão ou criar uma conta.
Olá,
Selecione uma conta diferente.
Tem várias contas
Selecione a conta com a qual pretende iniciar sessão.

A Microsoft distribui as correções do Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) ou do Microsoft SQL Server 2012 num ficheiro transferível. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as atualizações de segurança que foram incluídas com o anterior sql Server 2008 R2 Service Pack 1 (SP1) ou o lançamento da atualização SQL Server 2012.

Sintomas

Considere o seguinte cenário. Executa uma consulta no Microsoft SQL Server 2008 R2 ou no Microsoft SQL Server 2012, e o otimizador de consulta gera um plano de execução que contém o operador top. Neste cenário, a consulta pode demorar muito tempo a ser executada. Por exemplo, você faz uma consulta que se assemelha ao seguinte:

SELECT TableA.Col1 FROM TableA JOIN TableB ON TableA.Col1 = TableB.Col1 WHERE TableA.Col2 = N'A' AND TableB.Col3 IN (SELECT Col1 FROM TableC )Esta consulta envolve duas juntas. Uma junção é entre TableB e TableC. (Isto está implícito na presença do predicado IN.) A outra junção é entre a Tabela A e o resultado da primeira junção. O predicado in voltará a ser verdadeiro se a consulta encontrar pelo menos uma linha que satisfaça a primeira se juntar predicado. Portanto, o otimizador de consulta adiciona o operador top no plano de execução de consultas. Tal consulta pode voltar apenas algumas linhas. No entanto, pode levar mais tempo a executar esta consulta do que seria de esperar. No plano de execução de consultas, o número estimado de linhas difere significativamente do número real de linhas. Isto afeta a capacidade do otimizador de consultas de estimar com precisão o custo para diferentes escolhas de plano. O problema também pode ocorrer se utilizar o operador TOP explicitamente ou se utilizar um dos seguintes operadores:

  • OPÇÃO (FAST N)

  • EM

  • EXISTE

Resolução

Informação de atualização cumulativa

Sql Server 2008 R2 Service Pack 2

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

2720425 Pacote de atualização cumulativo 1 para SQL Server 2008 R2 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 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:

2730301 O SQL Server 2008 R2 constrói que foram lançados 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 Cumulativa Update 7 para SQL Server 2008 R2 Service Pack 1. Para obter mais informações sobre como obter este pacote de atualização cumulativa, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

2703282 Pacote de atualização cumulativo 7 para SQL Server 2008 R2 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 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:

2567616 O SQL Server 2008 R2 constrói que foram lançados após o lançamento do SQL Server 2008 R2 Service Pack 1

SQL Server 2012

A correção para este problema foi lançada pela primeira vez na Cumulativa Update 2 para o SQL Server 2012. 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:

2703275 Pacote de atualização cumulativo 2 para SQL Server 2012Nota 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 2012. 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:

2692828 O SQL Server 2012 constrói que foram lançados após o lançamento do SQL Server 2012 Deve aplicar um hotfix SQL Server 2012 a uma instalação do SQL Server 2012.

SQL Server 2008 R2

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 13. 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:

2679366 Pacote de atualização cumulativo 13 para SQL Server 2008 R2Nota 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 R2Nota Depois de instalar a atualização cumulativa, deverá ligar o trace-flag 4199 para ativar a correção fornecida nesta atualização cumulativa se as seguintes condições forem verdadeiras:

  • O plano de consulta tem um operador TOP acima de um operador de União De Laços Aninhados (junte-se a 1) no lado direito de outro operador de aplicação/junção (junte-se a 2).

  • O lado externo da junção 1 tem uma referência exterior ao lado externo da junção 2.

  • A Join 1 usa um predicado de igualdade numa coluna do lado esquerdo que é única.

Um exemplo de tal consulta aparece na secção "Sintomas". (Isto pressupõe que existem alguns constrangimentos de singularidade na base de dados.) Se houver outras consultas que contenham operadores TOP, OPTION (FAST N), IN ou EXISTS e produzam sintomas semelhantes, mas não se encaixem no padrão que está descrito aqui, ligue a bandeira de traço 4138.Aviso Se ativar o traço da bandeira 4138, o desempenho pode diminuir para outras consultas que contenham operadores TOP, OPTION (FAST N), IN ou EXISTS. A bandeira de rastreio 4138 só deve ser utilizada quando as seguintes condições forem verdadeiras:

  • Confirma-se o seu efeito em consultas lentas que envolvem estes operadores.

  • Não há outras soluções úteis.

  • Não são detetadas regressões noutras consultas que contenham operadores semelhantes.

Estado

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

Solução

Para contornar este problema, utilize o operador LEFT OUTER JOIN ou qualquer uma das várias dicas OPTIMIZER.

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.

Estas informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?
Ao selecionar submeter, o seu feedback será utilizado para melhorar os produtos e serviços da Microsoft. O seu administrador de TI poderá recolher estes dados. Declaração de Privacidade.

Obrigado pelo seu feedback!

×