CORRECÇÃO: O uso da memória do plano de consulta compilada inesperadamente pode aumentar no SQL Server 2005

Traduções deste artigo Traduções deste artigo
ID do artigo: 919636 - Exibir os produtos aos quais esse artigo se aplica.
Bug #: 810 (Hotfix do SQL)
Aviso
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
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
  • Informações sobre se é necessário reiniciar o computador depois de instalar o pacote de hotfix
  • Informações sobre se o pacote de hotfix é substituído por qualquer outro pacote de hotfix
  • Informações sobre se você deve fazer alterações no registro
  • Arquivos que estão contidos no pacote de hotfix

Sintomas

Quando você examinar o plano de consulta compilada de uma consulta, você pode perceber que o uso de memória do plano de consulta complied inesperadamente pode aumentar no SQL Server 2005 em comparação com o Microsoft SQL Server 2000.

Esse problema pode ocorrer quando uma das seguintes condições for verdadeira:
  • Condição 1: A consulta faz referência a uma tabela que usa colunas computadas.
  • Condição 2: A consulta contém operações de seqüência de caracteres entre os valores das colunas nvarchar e seqüências de caracteres ANSI. Por exemplo, a operação de seqüência de caracteres compara os valores de colunas nvarchar para seqüências de caracteres ANSI.
  • condição 3: A consulta contém uma referência a uma tabela que possui uma coluna calculada. A coluna calculada é baseada em uma coluna nvarchar . No entanto, a coluna computador usa constantes de seqüência de caracteres ANSI na expressão.
Condições 2 e 3 podem causar um aumento significativo no uso de memória de um plano de consulta compilada.

Por exemplo, você tiver uma tabela que possua uma coluna nvarchar . O nome da tabela é MyTable e o nome da coluna nvarchar é MyCol. Em seguida, defina a consulta usando a seguinte sintaxe:
SELECT CASE MyCol
          WHEN 'Value1' THEN 'NewValue1'
          WHEN 'Value2' THEN 'NewValue2'
          ELSE MyCol
       END
FROM MyTable
neste exemplo, as seqüências "Value1", "Valor2", "NewValue1" e "NewValue2" são seqüências de caracteres ANSI. Os valores da coluna nvarchar MyCol primeiro são comparados com as cadeias de ANSI "Value1" e "Valor2". Em seguida, o valor correspondente a "NewValue1", "NewValue2" seqüência de caracteres ANSI ou o valor original da coluna MyCol é escolhido.

Você pode exibir o uso de memória plano compilado pelo exame da coluna pagesused da tabela do sistema sys.syscacheobjects ou a exibição de gerenciamento dinâmico sys.dm_exec_cached_plans.

Esse tamanho aumentado do plano de consulta complied também pode levar a um aumento do tempo de espera para o tipo de espera RESOURCE_SEMAPHORE_QUERY_COMPILE.

Resolução

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

Você deve ter o SQL Server 2005 Service Pack 1 (SP1) instalado para aplicar esse hotfix. 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. No entanto, se você já tenha afetado por esse problema, você deve seguir as etapas na seção "Workground" depois de aplicar esse hotfix para reverter os arquivos de banco de dados para um estado de integridade.

Informações do registro

Não é necessário alterar o registro.

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.
Versão do SQL Server 2005 32-bit
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
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 versão 64
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
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 de arquitetura Itanium do SQL Server 2005
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
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" na frente de todas as seqüências que estão no contexto do problema. Você pode alterar o exemplo que é descrito na seção "Sintomas" usando a seguinte sintaxe:

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

Situação

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

Mais Informações

Você pode exibir o uso de memória plano compilado pelo exame da coluna pagesused da tabela do sistema sys.syscacheobjects ou a exibição de gerenciamento dinâmico sys.dm_exec_cached_plans.

Para obter mais informações sobre a tabela de sistema sys.syscacheobjects, visite o seguinte site da Web Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms187815.aspx
Para obter mais informações sobre a exibição de gerenciamento dinâmico sys.dm_exec_cached_plans, visite o seguinte site da MSDN:
http://msdn.microsoft.com/en-us/library/ms187404.aspx
Para obter mais informações sobre o esquema para nomeação para atualizações do Microsoft SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
822499Novo esquema para nomeação para pacotes de atualização de software do Microsoft SQL Server
Para obter mais informações sobre terminologia de atualização de software, 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: 919636 - Última revisão: terça-feira, 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 Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • 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 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: 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