CORRECÇÃO: O desempenho do sistema pode ser lento quando uma aplicação submete várias consultas numa base de dados SQL Server 2005 que utiliza parameterization simples

Traduções de Artigos Traduções de Artigos
Artigo: 920206 - Ver produtos para os quais este artigo se aplica.
A Microsoft distribui correcções Microsoft SQL Server 2005 como um ficheiro transferível. Uma vez que as correcções são cumulativas, cada nova versão contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2005 anterior corrigir lançamento.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo descreve o seguinte sobre esta versão de correcção:
  • Problemas corrigidos por este pacote de correcções
  • Pré-requisitos para instalar o pacote de correcções
  • Se tem de reiniciar o computador depois de instalar o pacote de correcção
  • Se o pacote de correcções é substituído por qualquer outro pacote de correcção
  • Se terá de efectuar quaisquer alterações de registo
  • Ficheiros contidos no pacote de correcção

Sintomas

Considere o seguinte cenário: aplicação submete várias consultas numa base de dados do Microsoft SQL Server 2005. As consultas têm texto de 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 cadeia de declaração de parâmetro. A base de dados do SQL Server 2005 utiliza parameterization simples. Neste cenário, desempenho do sistema SQL Server 2005 poderá ser lento. Além disso, poderá detectar utilização elevada da CPU.

Este problema ocorre com mais frequência quando a base de dados do SQL Server 2005 é grande e é um cenário muito exigentes.

Nota O comportamento predefinido de uma base de dados do SQL Server 2005 consiste em utilizar parameterization simples.

Causa

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

Resolução

Informações sobre a correcção

Está disponível a partir da Microsoft uma correcção suportada. No entanto, esta correcção destina-se a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico. Esta correcção poderá submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pela próxima actualização de software que contenha esta correcção.

Se a correcção está disponível para transferência, existe uma secção "denominada transferência de correcção disponível" na parte superior deste artigo da base de dados de conhecimento. Se esta secção não for apresentado, contacte o serviço de cliente do Microsoft e suporte para obter a correcção.

Nota Se ocorram problemas adicionais ou se for necessária qualquer resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem esta correcção específica. Para obter uma lista completa dos números de telefone do suporte de cliente do Microsoft ou para criar um pedido serviço separado, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota O formulário "Transferência de correcção disponível" apresenta os idiomas para a qual a correcção está disponível. Se não vir o idioma, é porque uma correcção não está disponível para esse idioma.

Pré-requisitos

Para aplicar esta correcção, tem de ter 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 de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
913089Como obter o service pack mais recente para o SQL Server 2005

Informações sobre reinício

Não é necessário reiniciar o computador depois de aplicar esta correcção.

Informações de registo

Não é necessário alterar o registo.

Informações sobre substituição de correcções

Esta correcção não substitui quaisquer outras correcções.

Informações sobre ficheiros da correcção

Esta correcção contém apenas os ficheiros necessários para corrigir os problemas referidos neste artigo. Esta correcção não pode conter de todos os ficheiros que necessita para actualizar completamente um produto para a compilação mais recente.
A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas na hora universal coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário no item Data e hora no painel de controlo.
correcção do SQL Server 2005, 32 bits
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
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
correcção do SQL Server 2005, 64 bits
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
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
correcção do SQL Server 2005, 64 bits para processadores Itanium
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
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

Ponto Da Situação

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

Como contornar

Para contornar este problema, utilize parameterization explícito na aplicação cliente. Quando utiliza parameterization explícito na aplicação cliente, plano de única execução é criado e armazenado na cache de procedimento. É esta solução alternativa, desempenho do sistema SQL Server 2005 executado conforme esperado.

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

Mais Informação

Quando uma aplicação submete várias consultas numa base de dados do SQL Server 2005, o plano de execução para cada consulta tem de existir na cache do procedimento antes da consulta pode ser executada.

Nota Se o plano de execução de uma consulta específica não estiver presente na cache do procedimento, o SQL Server compilar a consulta, escreve o plano de execução da consulta para a cache do procedimento e, em seguida, executa a consulta.

Quando o SQL Server 2005 obtém um plano de execução em cache para uma consulta específica a partir da cache do procedimento, SQL Server identifica o plano de execução correspondente utilizando uma chave hash que foi derivada quando a consulta foi compilada. A versão original do SQL Server 2005 deriva hash teclas apenas o texto de consulta e ignora a cadeia de declaração de parâmetro. Quando o SQL Server 2005 deriva hash teclas apenas o texto de consulta, o SQL Server 2005 coloca as chaves de hash para todas as consultas com o texto de consulta idênticos e os mesmos parâmetros no mesmo recipiente de hash. Este comportamento ocorre mesmo que cada consulta tem uma combinação diferente de precisão e escala para os valores numéricos na cadeia de declaração de parâmetro. Quando tenta obter um plano de execução de consulta em cache a partir da cache procedimento para uma consulta específica SQL Server 2005, SQL Server tem de examinar todos os os execução planos de consulta no correspondente recipiente de hash para localizar o plano de execução de uma consulta que corresponde o texto de consulta, os parâmetros e a cadeia de declaração de parâmetro.

Depois de aplicar esta correcção, o SQL Server 2005 deriva hash chaves do texto de consulta e a cadeia 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 cadeia de declaração de parâmetro não corresponde à outra consulta existente, o SQL Server 2005 coloca a chave de hash para a nova consulta num novo recipiente do hash. SQL Server 2005 coloca a chave de hash para a nova consulta de um novo recipiente de hash, mesmo quando a nova consulta com texto de consulta idênticos e os mesmos parâmetros outra consulta existente. Assim, quando o SQL Server 2005 tenta obter os planos de execução em cache a partir da cache procedimento para a nova consulta, o recipiente de hash correspondentes contém apenas uma consulta para o SQL Server examinar.

Neste cenário de resolução de correcção, o SQL Server 2005 ainda tem vários planos de execução. Isto ocorre porque é criado um plano de execução separadas para cada consulta tem uma nova combinação de precisão e escala para os valores numéricos na cadeia 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 do sistema SQL Server 2005 para armazenar o plano de execução na cache do procedimento. Uma vez que o cenário de resolução de correcção requer muita recursos de sistema do SQL Server 2005, SQL Server 2005 desempenho do sistema poderá estar mais lento do que o esperado.
Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Propriedades

Artigo: 920206 - Última revisão: 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 2005 Server Enterprise
  • 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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