CORRECÇÃO: Desempenho do sistema pode ser lento quando um aplicativo envia várias consultas em um banco de dados SQL Server 2005 que usa parametrização simples

Traduções deste artigo Traduções deste artigo
ID do artigo: 920206 - Exibir os produtos aos quais esse artigo se aplica.
A Microsoft distribui correções do Microsoft SQL Server 2005 como um arquivo para download. Como as correções são cumulativas, cada versão nova contém todos os hotfixes e todos os as correções de segurança que foram incluídas com o anterior SQL Server 2005 corrigir lançamento.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo descreve o seguinte sobre esta versão de hotfix:
  • Problemas corrigidos por esse pacote de hotfix
  • Os pré-requisitos para instalar o pacote de hotfix
  • Se é necessário reiniciar o computador depois de instalar o pacote de hotfix
  • Se o pacote de hotfix é substituído por qualquer outro pacote de hotfix
  • Se você deve fazer alterações no registro
  • Arquivos que estão contidos no pacote de hotfix

Sintomas

Considere o seguinte cenário: um aplicativo envia várias consultas em um banco de dados Microsoft SQL Server 2005. As consultas tem texto da consulta idênticos e declarar os mesmos parâmetros. No entanto, as consultas também tem diferentes combinações de precisão e escala para os valores do tipo de dados numérico na seqüência de declaração de parâmetro. O banco de dados SQL Server 2005 usa parametrização simples. Nesse cenário, desempenho do sistema SQL Server 2005 pode ser lento. Além disso, você enfrenta alto uso da CPU.

Esse problema ocorre com mais freqüência quando o banco de dados SQL Server 2005 é grande e está em um cenário de alto-estresse.

Observação O comportamento padrão de um banco de dados do SQL Server 2005 é usar parametrização simples.

Causa

Esse problema ocorre porque o SQL Server deve examinar várias consultas para localizar uma consulta que é uma correspondência para o texto da consulta, os parâmetros e a seqüência de declaração de parâmetro.

Resolução

Informações sobre o hotfix

Um hotfix suportado está disponível no Microsoft. No entanto, esse hotfix destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde a próxima atualização de software que contém esse hotfix.

Se o hotfix está disponível para download, há uma seção "Download de Hotfix disponível" na parte superior neste artigo da Base de dados de Conhecimento. Se esta seção não for exibida, contate o atendimento e suporte para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para obter uma lista completa de números de telefone de suporte e Atendimento Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação O formulário "Download de Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma, é porque um hotfix não está disponível para esse idioma.

Pré-requisitos

Para aplicar esse hotfix, você deve ter o SQL Server 2005 Service Pack 1 (SP1) instalado no computador.
Para obter mais informações sobre como obter o SQL Server 2005 Service Pack 1, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
913089Como obter o service pack mais recente para o SQL Server 2005

Informações sobre reinicialização

Não é necessário reiniciar o computador após aplicar esse hotfix.

Informações do registro

Não é necessário alterar o registro.

Informações sobre a substituição do hotfix

Esse hotfix não substitui outros hotfixes.

Informações sobre o arquivo de hotfix

Esse hotfix contém apenas os arquivos que são necessárias para corrigir os problemas que este artigo lista. Este hotfix não pode conter de todos os arquivos que você deve ter para actualizar completamente um produto para a compilação mais recente.
A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas no horário de universal coordenado (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário no item Data e hora no painel de controle.
hotfix do SQL Server 2005, 32 bits
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2164.075,55214 De junho de 200620: 29x 86
Microsoft.SQLServer.SqlEnum.dll9.0.2164.0908,06414 De junho de 200620: 32x 86
Msgprox.dll2005.90.2164.0197,92014 De junho de 200620: 29x 86
Msmdlocal.dll9.0.2164.015,661,85614 De junho de 200620: 33x 86
Mssqlsystemresource.ldfNão aplicável524,28814 De junho de 200614: 23Não aplicável
Mssqlsystemresource.mdfNão aplicável39,911,42414 De junho de 200614: 23Não aplicável
Replprov.dll2005.90.2164.0547,61614 De junho de 200620: 31x 86
Replrec.dll2005.90.2164.0782,11214 De junho de 200620: 32x 86
Sqlaccess.dll2005.90.2164.0347,93614 De junho de 200620: 31x 86
Sqlservr.exe2005.90.2164.028,950,87214 De junho de 200620: 33x 86
hotfix do SQL Server 2005, 64-bit
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2164.075,55214 De junho de 200620: 29x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2164.091,42414 De junho de 200621: 10x 64
Microsoft.SQLServer.SqlEnum.dll9.0.2164.0875,29614 De junho de 200621: 12x 86
Msgprox.dll2005.90.2164.0259,36014 De junho de 200621: 10x 64
Msmdlocal.dll9.0.2164.015,661,85614 De junho de 200620: 33x 86
Mssqlsystemresource.ldfNão aplicável524,28814 De junho de 200614: 23Não aplicável
Mssqlsystemresource.mdfNão aplicável39,911,42414 De junho de 200614: 23Não aplicável
Replprov.dll2005.90.2164.0745,24814 De junho de 200621: 12x 64
Replrec.dll2005.90.2164.01,008,41614 De junho de 200621: 12x 64
Sqlaccess.dll2005.90.2164.0355,10414 De junho de 200621: 11x 86
Sqlservr.exe2005.90.2164.039,251,23214 De junho de 200621: 13x 64
hotfix do SQL Server 2005, 64 bits para processadores Itanium
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2164.0163,10414 De junho de 200620: 29IA-64
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2164.075,55214 De junho de 200620: 29x 86
Microsoft.SQLServer.SqlEnum.dll9.0.2164.0875,29614 De junho de 200620: 29x 86
Msgprox.dll2005.90.2164.0542,49614 De junho de 200620: 28IA-64
Msmdlocal.dll9.0.2164.048,733,98414 De junho de 200620: 30IA-64
Mssqlsystemresource.ldfNão aplicável524,28814 De junho de 200614: 23Não aplicável
Mssqlsystemresource.mdfNão aplicável39,911,42414 De junho de 200614: 23Não aplicável
Replprov.dll2005.90.2164.01,617,18414 De junho de 200620: 29IA-64
Replrec.dll2005.90.2164.02,141,47214 De junho de 200620: 29IA-64
Sqlaccess.dll2005.90.2164.0349,47214 De junho de 200620: 28x 86
Sqlservr.exe2005.90.2164.072,208,67214 De junho de 200620: 30IA-64

Situação

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

Como Contornar

Para contornar esse problema, use parametrização explícita no aplicativo cliente. Quando você usa parametrização explícita no aplicativo cliente, plano de execução somente um é criado e armazenado no cache de procedimento. Esta solução alternativa, desempenho do sistema SQL Server 2005 é executado conforme o esperado.

Para obter mais informações sobre parametrização explícita e plano de execução reutilizar, visite a seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms175580.aspx

Mais Informações

Quando um aplicativo envia várias consultas em um banco de dados do SQL Server 2005, o plano de execução para cada consulta deve estar presente no cache de procedimento antes que a consulta pode ser executada.

Observação Se o plano de execução para uma consulta específica não estiver presente no cache de procedimento, o SQL Server compila a consulta, grava o plano de execução para a consulta para o cache de procedimento e, em seguida, executa a consulta.

Quando o SQL Server 2005 recupera um plano de execução em cache para uma consulta específica de cache de procedimento, o SQL Server identifica o plano de execução correspondente usando uma chave de hash que foi derivada quando a consulta foi compilada. A versão de lançamento original do SQL Server 2005 deriva hash chaves apenas o texto da consulta e ignora a seqüência de declaração de parâmetro. Quando o SQL Server 2005 deriva hash chaves apenas o texto da consulta, o SQL Server 2005 coloca as chaves de hash para todas as consultas que tenham os mesmos parâmetros e texto da consulta idênticos no bucket de hash de mesmo. Esse comportamento ocorre mesmo se cada consulta tem uma combinação diferente de precisão e escala para os valores numéricos na seqüência de declaração de parâmetro. Quando o SQL Server 2005 tenta recuperar um plano de execução de consulta em cache do cache de procedimento para uma consulta específica, o SQL Server deve examinar todos os os consulta planos de execução no bucket de hash correspondente para localizar o plano de execução de uma consulta que corresponde o texto da consulta, os parâmetros e a seqüência de declaração de parâmetro.

Depois de aplicar esse hotfix, SQL Server 2005 deriva as chaves de hash o texto de consulta e a seqüência de declaração de parâmetro. Quando uma nova consulta tem uma combinação de precisão e escala para os valores numéricos na seqüência de declaração de parâmetro que não corresponde à outra consulta existente, o SQL Server 2005 coloca a chave de hash para a nova consulta em um novo depósito de hash. SQL Server 2005 coloca a chave de hash para a nova consulta em um novo depósito de hash, mesmo quando a nova consulta possui texto da consulta idênticos e os mesmos parâmetros como outra consulta existente. Portanto, quando o SQL Server 2005 tenta recuperar os planos de execução em cache do cache de procedimento para a nova consulta, o bucket hash correspondente contém somente uma consulta para o SQL Server examinar.

Nesse cenário de resolução de hotfix, o SQL Server 2005 ainda tem muitos planos de execução. Isso ocorre porque um plano de execução separado é criado para cada consulta que tenha uma nova combinação de precisão e escala para os valores numéricos na seqüência de declaração de parâmetro. Cada plano de execução requer recursos do sistema SQL Server 2005 para criar o plano de execução. Cada plano de execução requer recursos de sistema do SQL Server 2005 para armazenar o plano de execução no cache de procedimento. Como o cenário de resolução de hotfix requer muitos recursos do sistema SQL Server 2005, desempenho do sistema SQL Server 2005 ainda pode ser mais lento do que o esperado.
Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software

Propriedades

ID do artigo: 920206 - Última revisão: terça-feira, 20 de novembro de 2007 - Revisão: 1.8
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Developer Edition
Palavras-chave: 
kbmt kbautohotfix kbbug kbfix kbtshoot kbhotfixserver kbqfe kbpubtypekc KB920206 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 920206

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com