CORRECÇÃO: A utilização da memória do plano de consulta compilada inesperadamente pode aumentar em SQL Server 2005

Traduções de Artigos Traduções de Artigos
Artigo: 919636 - Ver produtos para os quais este artigo se aplica.
N.º de bugs: 810 (correcção SQL)
Importante
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
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
  • Informações sobre se tem de reiniciar o computador depois de instalar o pacote de correcção
  • Informações sobre se o pacote de correcções é substituído por qualquer outro pacote de correcção
  • Informações sobre se terá de efectuar quaisquer alterações de registo
  • Ficheiros contidos no pacote de correcção

Sintomas

Quando examina o plano de consulta compilada de uma consulta, poderá notar que a utilização da memória do plano de consulta complied poderá aumentar inesperadamente no SQL Server 2005 comparado com o Microsoft SQL Server 2000.

Este problema poderá ocorrer quando uma das seguintes condições for verdadeira:
  • condição 1: A consulta faz referência a uma tabela que utiliza colunas calculadas.
  • condição 2: A consulta contém operações de cadeia entre os valores das colunas nvarchar e cadeias de ANSI. Por exemplo, a operação de cadeia compara os valores das colunas nvarchar para cadeias de ANSI.
  • condição 3: A consulta contém uma referência a uma tabela que tem uma coluna calculada. A coluna calculada baseia-se uma coluna nvarchar . No entanto, a coluna de computador utiliza as constantes string ANSI na expressão.
Condições 2 e 3 podem causar um aumento significativo a utilização da memória de um plano de consulta compilada.

Por exemplo, tiver uma tabela que tem uma coluna nvarchar . O nome da tabela é AMinhaTabela e o nome da coluna nvarchar é MyCol. Em seguida, definir a consulta utilizando a seguinte sintaxe:
SELECT CASE MyCol
          WHEN 'Value1' THEN 'NewValue1'
          WHEN 'Value2' THEN 'NewValue2'
          ELSE MyCol
       END
FROM MyTable
neste exemplo, as cadeias "Valor1", "Valor2", "NewValue1" e "NewValue2" são cadeias de ANSI. Os valores da coluna nvarchar MyCol primeiro são comparados com as cadeias de ANSI "Valor1" e "Valor2". Em seguida, o valor correspondente a "NewValue1", "NewValue2" cadeia de caracteres ANSI ou o valor original da coluna MyCol é escolhido.

Pode ver a utilização de memória plano compilado examinando a coluna da tabela de sistema sys.syscacheobjects ou a vista de gestão dinâmica sys.dm_exec_cached_plans pagesused .

Este tamanho maior do plano de consulta complied também poderá conduzir a um aumento de tempo de espera para o tipo de espera RESOURCE_SEMAPHORE_QUERY_COMPILE.

Resoluçã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

Tem de ter o SQL Server 2005 Service Pack 1 (SP1) instalado para aplicar esta correcção. 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. No entanto, se já tiver afectado por este problema, tem de seguir os passos da secção "Workground" depois de aplicar esta correcção para reverter os ficheiros de base de dados para um estado Saudável.

Informações de registo

Não é necessário alterar o registo.

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.
Versão do SQL Server 2005 32 bits
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
Microsoft.SQLServer.sqlenum.dll9.0.2164.0908,06414 De Junho de 200612: 32x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2164.075,55214 De Junho de 200612: 29x 86
Msgprox.dll2005.90.2164.0197,92014 De Junho de 200612: 29x 86
Replprov.dll2005.90.2164.0547,61614 De Junho de 200612: 31x 86
Replrec.dll2005.90.2164.0782,11214 De Junho de 200612: 32x 86
Msmdlocal.dll9.0.2164.015,661,85614 De Junho de 200612: 33x 86
Sqlaccess.dll2005.90.2164.0347,93614 De Junho de 200612: 31x 86
Sqlservr.exe2005.90.2164.028,950,87214 De Junho de 200612: 33x 86
SQL Server 2005 x 64 versão
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
Microsoft.SQLServer.sqlenum.dll9.0.2164.0875,29614 De Junho de 200613: 12x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2164.091,42414 De Junho de 200612: 29x 64
Msgprox.dll2005.90.2164.0259,36014 De Junho de 200613: 10x 64
Replprov.dll2005.90.2164.0745,24814 De Junho de 200613: 12x 64
Replrec.dll2005.90.2164.01,008,41614 De Junho de 200613: 12x 64
Msmdlocal.dll9.0.2164.015,661,85614 De Junho de 200612: 33x 86
Sqlaccess.dll2005.90.2164.0355,10414 De Junho de 200613: 11x 86
Sqlservr.exe2005.90.2164.039,251,23214 De Junho de 200613: 13x 64
Versão da arquitectura Itanium do SQL Server 2005
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
Microsoft.SQLServer.sqlenum.dll9.0.2164.0875,29614 De Junho de 200612: 29x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2164.0163,10414 De Junho de 200612: 29IA-64
Msgprox.dll2005.90.2164.0542,49614 De Junho de 200612: 28IA-64
Msmdlocal.dll9.0.2164.048,733,98414 De Junho de 200612: 30IA-64
Replprov.dll2005.90.2164.01,617,18414 De Junho de 200612: 29IA-64
Replrec.dll2005.90.2164.02,141,47214 De Junho de 200612: 29IA-64
Sqlaccess.dll2005.90.2164.0349,47214 De Junho de 200612: 28x 86
Sqlservr.exe2005.90.2164.072,208,67214 De Junho de 200612: 30IA-64

Como contornar

Para contornar este problema, adicione uma letra maiúscula "N" à frente de todas as cadeias que estão no contexto do problema. Pode alterar o exemplo descrito na secção "Sintomas", utilizando a seguinte sintaxe:

SELECT CASE MyCol WHEN N'Value1' THEN N'NewValue1' WHEN N'Value2' THEN N'NewValue2' ELSE MyCol END FROM MyTable

Ponto Da Situação

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

Mais Informação

Pode ver a utilização de memória plano compilado examinando a coluna da tabela de sistema sys.syscacheobjects ou a vista de gestão dinâmica sys.dm_exec_cached_plans pagesused .

Para mais informações sobre a tabela de sistema sys.syscacheobjects, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms187815.aspx
Para obter mais informações sobre a vista de gestão dinâmica sys.dm_exec_cached_plans, visite o seguinte site da Web MSDN:
http://msdn.microsoft.com/en-us/library/ms187404.aspx
Para obter mais informações sobre o esquema de atribuição de nomes para actualizações do Microsoft SQL Server, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
822499Novo esquema de atribuição de nomes de ficheiros para pacotes de actualização de software do Microsoft SQL Server
Para obter mais informações sobre a terminologia de actualização de software, 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: 919636 - Última revisão: 20 de novembro de 2007 - Revisão: 1.9
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Standard X64 Edition
Palavras-chave: 
kbmt kbautohotfix kbsql2005engine kbhotfixserver kbexpertiseadvanced kbqfe kbfix kbpubtypekc KB919636 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: 919636

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