CORRECÇÃO: Uma tabela de partição pode gerar um plano de consulta ineficaz quando executa uma consulta de Transact-SQL que utiliza a cláusula superior n numa tabela com partições em SQL Server 2005

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

Sintomas

Quando executa uma consulta de Transact-SQL que utiliza a cláusula superior n numa tabela com partições no Microsoft SQL Server 2005, a tabela de partição pode gerar um plano de consulta ineficaz. O plano pode efectuar uma verificação do índice clusterizado em vez de efectuar uma procura de índice não agrupado mais eficiente. Por exemplo, tiver este problema se as seguintes condições forem verdadeiras:
  • Executar uma consulta numa tabela tblTest . A consulta poderá assemelhar-se o seguinte:
    SELECT top 1 * FROM tblTest WHERE OrderID = 'ABCDXYZ' ORDER BY OrderDateTime DESC
  • A tabela tblTest divididos em partições na coluna OrderDateTime .
  • É criado um índice agrupado na coluna OrderDateTime .
  • É criado um índice não agrupado na coluna CódigoDaEncomenda .
notas
  • Ainda é efectuada uma pesquisa de índice agrupado sem a utilização da cláusula ORDER BY.
  • Quando a tabela e os índices não são partições, é gerado um plano de procura de índice não agrupado.

Causa

Este problema ocorre porque o Optimizador de consultas overestimates o custo de utilização de um índice de procura com uma tabela com partições.

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 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.
SQL Server 2005, 32 bits x 86 versões
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
Logread.exe2005.90.2187.0398,11231 De Agosto de 200619: 40x 86
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,52031 De Agosto de 200619: 41x 86
Microsoft.analysisservices.deploymentengine.dll9.0.2187.0138,01631 De Agosto de 200619: 38x 86
Microsoft.analysisservices.dll9.0.2187.01,215,26431 De Agosto de 200619: 39x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.075,55231 De Agosto de 200619: 37x 86
Microsoft.SQLServer.sqlenum.dll9.0.2187.0908,06431 De Agosto de 200619: 39x 86
Msgprox.dll2005.90.2187.0197,92031 De Agosto de 200619: 40x 86
Msmdlocal.dll9.0.2187.015,610,14431 De Agosto de 200619: 39x 86
Msmdredir.dll9.0.2187.03,990,30431 De Agosto de 200619: 40x 86
Replprov.dll2005.90.2187.0547,61631 De Agosto de 200619: 41x 86
Replrec.dll2005.90.2187.0782,11231 De Agosto de 200619: 39x 86
Sqlaccess.dll2005.90.2187.0347,93631 De Agosto de 200619: 40x 86
Sqlagent90.exe2005.90.2187.0319,26431 De Agosto de 200619: 39x 86
Sqlservr.exe2005.90.2187.028,961,11231 De Agosto de 200619: 39x 86
Xpstar90.dll2005.90.2187.0292,64031 De Agosto de 200619: 42x 86
Xpstar90.rll2005.90.2187.0152,86431 De Agosto de 200619: 39x 86
SQL Server 2005, versão de 64 bits
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
Logread.exe2005.90.2187.0522,52801-Set-200600: 06x 64
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,52031 De Agosto de 200619: 41x 86
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,52001-Set-200602: 00x 86
Microsoft.analysisservices.deploymentengine.dll9.0.2187.0138,01631 De Agosto de 200619: 38x 86
Microsoft.analysisservices.dll9.0.2187.01,215,26431 De Agosto de 200619: 39x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.075,55231 De Agosto de 200619: 37x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.091,42401-Set-200600: 03x 64
Microsoft.SQLServer.sqlenum.dll9.0.2187.0875,29601-Set-200604: 00x 86
Msgprox.dll2005.90.2187.0259,36001-Set-200600: 05x 64
Msmdlocal.dll9.0.2187.015,610,14431 De Agosto de 200619: 39x 86
Msmdredir.dll9.0.2187.03,990,30431 De Agosto de 200619: 40x 86
Replprov.dll2005.90.2187.0745,24801-Set-200600: 03x 64
Replrec.dll2005.90.2187.01,008,41601-Set-200604: 00x 64
Sqlaccess.dll2005.90.2187.0355,10401-Set-200600: 06x 86
Sqlagent90.exe2005.90.2187.0390,94401-Set-200600: 06x 64
Sqlservr.exe2005.90.2187.039,341,85601-Set-200600: 03x 64
Xpstar90.dll2005.90.2187.0540,96001-Set-200600: 06x 64
Xpstar90.rll2005.90.2187.0153,37601-Set-200604: 00x 64
SQL Server 2005, versão da arquitectura Itanium
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
Logread.exe2005.90.2187.01,095,45631 De Agosto de 200623: 02IA-64
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,52031 De Agosto de 200619: 41x 86
Microsoft.analysisservices.adomdclient.dll9.0.2187.0543,52031 De Agosto de 200623: 01x 86
Microsoft.analysisservices.deploymentengine.dll9.0.2187.0138,01631 De Agosto de 200619: 38x 86
Microsoft.analysisservices.dll9.0.2187.01,215,26431 De Agosto de 200619: 39x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.075,55231 De Agosto de 200619: 37x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.0163,10431 De Agosto de 200623: 00IA-64
Microsoft.SQLServer.sqlenum.dll9.0.2187.0875,29631 De Agosto de 200623: 02x 86
Msgprox.dll2005.90.2187.0542,49631 De Agosto de 200623: 01IA-64
Msmdlocal.dll9.0.2187.048,587,04031 De Agosto de 200623: 01IA-64
Msmdredir.dll9.0.2187.06,237,47231 De Agosto de 200623: 02IA-64
Replprov.dll2005.90.2187.01,617,18431 De Agosto de 200623: 02IA-64
Replrec.dll2005.90.2187.02,141,47231 De Agosto de 200623: 02IA-64
Sqlaccess.dll2005.90.2187.0349,47231 De Agosto de 200623: 01IA-64
Sqlagent90.exe2005.90.2187.01,143,58431 De Agosto de 200623: 02IA-64
Sqlservr.exe2005.90.2187.072,216,86431 De Agosto de 200623: 01IA-64
Xpstar90.dll2005.90.2187.0951,07231 De Agosto de 200623: 04IA-64
Xpstar90.rll2005.90.2187.0152,35231 De Agosto de 200623: 02IA-64

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

Para a consulta na secção "Sintomas", um plano de consulta que utiliza uma tabela de partição pode assemelhar-se o seguinte:
SELECT top 1 * FROM tblTest WHERE ORDERID = 'AE5PL-14' ORDER BY OrderDateTime DESC
|--Top(TOP EXPRESSION:((1)))
|--Nested Loops(Inner Join, OUTER REFERENCES:([PtnIds1004]) PARTITION ID:([PtnIds1004]))
|--Constant Scan(VALUES:(((32)),((31)),((30)),((29)),((28)),((27)),((26)),((25)),((24)),((23)),((22)),((21)),((20)),((19)),((18)),((17)),((16)),
((15)),((14)),((13)),((12)),((11)),((10)),((9)),((8)),((7)),((6)),((5)),((4)),((3)),((2)),((1))))
|--Clustered Index Scan(OBJECT:([part2].[dbo].[tblTest].[IX_tblTest_RT]), WHERE:([part2].[dbo].[tblTest].[OrderID]='AE5PL-14') 
ORDERED BACKWARD 
PARTITION ID:([PtnIds1004]))
consulta plano que utiliza uma tabela de partições não poderá assemelhar-se a seguinte:
SELECT top 1 * FROM tblTest WHERE ORDERID = 'AE5PL-14' ORDER BY OrderDateTime DESC
|--Top(TOP EXPRESSION:((1)))
|--Nested Loops(Inner Join, OUTER REFERENCES:([Uniq1002], [nonpart2].[dbo].[tblTest].[OrderDateTime], [Expr1004]) WITH 
ORDERED PREFETCH)
|--Index Seek(OBJECT:([nonpart2].[dbo].[tblTest].[IX_tblTest]), SEEK:([nonpart2].[dbo].[tblTest].[OrderID]='AE5PL-14') ORDERED 
BACKWARD)
|--Clustered Index Seek(OBJECT:([nonpart2].[dbo].[tblTest].[IX_tblTest_RT]), SEEK:([nonpart2].[dbo].[tblTest].[OrderDateTime]=
[nonpart2].[dbo].[tblTest].[OrderDateTime] AND [Uniq1002]=[Uniq1002]) LOOKUP ORDERED FORWARD)

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

Para obter mais informações sobre um problema relacionado, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
923849CORRECÇÃO: Quando executar uma consulta que faz referência a uma tabela de partição no SQL Server 2005, desempenho das consultas poderá diminuir

Propriedades

Artigo: 924601 - Última revisão: 20 de novembro de 2007 - Revisão: 1.6
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
Palavras-chave: 
kbmt kbautohotfix kbfix kbexpertiseadvanced kbsql2005tsql kbhotfixserver kbqfe kbpubtypekc KB924601 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: 924601

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