KB2649913 - CORREÇÃO: O desempenho pode diminuir quando você executa uma consulta que usa o procedimento armazenado sp_cursoropen depois de atualizar do SQL Server 2005 para o SQL Server 2008 ou para o SQL Server 2008 R2 ou para o SQL Server 2012

Aplica-se a
SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Workgroup SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Express with Advanced Services SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard

A Microsoft distribui correções do Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) ou do Microsoft SQL Server 2012 em um arquivo para download. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as atualizações de segurança incluídas com a versão de atualização anterior do SQL Server 2008 R2 Service Pack 1 (SP1) ou do Microsoft SQL Server 2012.

Sintomas

Considere o seguinte cenário:

  • Você atualiza do Microsoft SQL Server 2005 para o Microsoft SQL Server 2008 ou para o Microsoft SQL Server 2008 R2 ou para o Microsoft SQL Server 2012.
  • Você executa uma consulta que usa o procedimento armazenado sp_cursoropen e, em seguida, especifica o parâmetro rowcount para buscar as primeiras linhas de uma tabela.

Nesse cenário, o desempenho pode ser mais lento do que se você executar a mesma consulta no SQL Server 2005.

Causa

Esse problema ocorre porque o otimizador de consultas usa um plano de cursor estático em vez de um plano de cursor dinâmico. Para um plano de cursor estático, o SQL Server busca todas as linhas e as insere na tabela de trabalho do cursor. No entanto, para um plano de cursor dinâmico, o SQL Server busca apenas as linhas necessárias.

Resolução

Informações sobre a atualização cumulativa

SQL Server 2012

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

2679368 Pacote de atualizações cumulativas 1 para SQL Server 2012Observação: como os builds são cumulativos, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança incluídas na versão de correção anterior SQL Server 2012. A Microsoft recomenda que você considere aplicar a versão 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:

2692828 As SQL Server builds de 2012 lançadas após o lançamento do SQL Server 2012 Você deve aplicar um hotfix do SQL Server 2012 a uma instalação do SQL Server 2012.

Pacote de atualização cumulativa 5 para SQL Server 2008 R2 SP1

Depois de aplicar esse hotfix, habilite o sinalizador de rastreamento 4199.

A correção para esse problema foi lançada pela primeira vez na Atualização Cumulativa 5. Para obter mais informações sobre como obter esse pacote de atualizações cumulativas para o SQL Server 2008 R2 SP1, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft:

2659694 Pacote de atualizações cumulativas 5 para o SQL Server 2008 R2 SP1Observação: como os builds são cumulativos, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança incluídas na versão de correção anterior do SQL Server 2008 R2 SP1. Recomendamos que você considere aplicar a versão 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:

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

Solução alternativa

Para contornar esse problema, adicione a dica de consulta FAST à consulta.

Mais informações

Para obter mais informações sobre como usar dicas de consulta, visite o seguinte site do MSDN:

Informações gerais sobre como usar dicas de consulta Para obter mais informações sobre o sinalizador de rastreamento 4199, visite o seguinte site:

Informações gerais sobre o sinalizador de rastreamento 4199

Status

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