Update: Eine partitionierte Tabelle kann eine ineffiziente Abfrageplan generieren, wenn Sie eine Transact-SQL-Abfrage ausführen, die die TOP n-Klausel in einer partitionierten Tabelle in SQL Server 2005 verwendet

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 924601 - Produkte anzeigen, auf die sich dieser Artikel bezieht
# Fehler: 1253 (SQL-Hotfix)
Microsoft stellt Updates für Microsoft SQL Server 2005 als downloadbare Datei. Da die Updates kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2005 enthalten waren.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt die folgenden zu dieser Hotfix-Version:
  • Durch dieses Hotfix-Paket behobene Probleme
  • Voraussetzungen für die Anwendung des Hotfix-Pakets
  • Gibt an, ob müssen Sie den Computer neu starten nach der Installation des Hotfix-Pakets
  • Gibt an, ob das Hotfix-Paket wird durch ein anderes Hotfixpaket ersetzt
  • Gibt an, ob Sie Registrierungsänderungen vornehmen müssen, nachdem Sie das Hotfix-Paket angewendet
  • In diesem Hotfix-Paket enthaltene Dateien

Problembeschreibung

Wenn Sie eine Transact-SQL-Abfrage ausführen, die TOP n-Klausel in einer partitionierten Tabelle in Microsoft SQL Server 2005 verwendet, kann die partitionierte Tabelle eine ineffiziente Abfrageplan generieren. Der Plan kann einen clustered Index Scan anstelle einer effizienter nicht gruppierten Index-Suche durchführen durchführen. Beispielsweise wird dieses Problem auftreten, wenn folgenden Bedingungen erfüllt sind:
  • Führen Sie eine Abfrage für eine Tabelle TblTest . Die Abfrage möglicherweise die folgenden ähneln:
    SELECT top 1 * FROM tblTest WHERE OrderID = 'ABCDXYZ' ORDER BY OrderDateTime DESC
  • Die Tabelle TblTest wird in der OrderDateTime Spalte partitioniert.
  • Ein gruppierter Index wird auf der OrderDateTime Spalte erstellt.
  • Ein nicht gruppierter Index wird auf die Spalte OrderID erstellt.
Notizen
  • Clustered Indexscan wird weiterhin ohne Verwendung von der ORDER BY-Klausel durchgeführt.
  • Wenn in der Tabelle und die Indizes nicht partitioniert werden, wird ein nicht gruppierter Index Suche Plan generiert.

Ursache

Dieses Problem rührt der Abfrageoptimierer die Kosten der Verwendung eines Indexes overestimates mit einer partitionierten Tabelle suchen.

Lösung

Hotfix-Informationen

Es ist ein unterstützter Hotfix von Microsoft erhältlich. Der Hotfix ist jedoch nur die Behebung des Problems die in diesem Artikel beschriebene vorgesehen. Installieren Sie diesen Hotfix nur auf Systemen, bei die dieses spezielle Problem auftritt. Dieser Hotfix kann einem späteren Zeitpunkt zusätzliche Tests unterzogen. Wenn durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfiehlt Microsoft daher, auf die nächste Softwareupdate zu warten, das diesen Hotfix enthält.

Wenn der Hotfix zum Download verfügbar ist, ist ein Abschnitt "Hotfix Download available (Hotfixdownload verfügbar" am oberen Rand dieser Knowledge Base-Artikel. Wenn in diesem Abschnitt nicht angezeigt wird, wenden Sie sich an technischen Kundendienst und Support, um den Hotfix zu erhalten.

Hinweis: Wenn weitere Probleme auftreten oder wenn eine Problembehandlung erforderlich ist, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Die normalen Supportkosten gelten die für zusätzliche Supportfragen und Probleme, die für diesen speziellen Hotfix nicht qualifizieren. Eine vollständige Liste der technischen Kundendienst und Support-Telefonnummern oder eine separate Serviceanfrage erstellen die folgende Microsoft-Website:
http://support.microsoft.com/contactus/?ws=support
Hinweis: Das Formular "Hotfix Download available (Hotfixdownload verfügbar" zeigt die Sprachen für die der Hotfix verfügbar ist. Wenn Ihre Sprache nicht angezeigt wird, ist es, da ein Hotfix nicht für diese Sprache zur Verfügung steht.

Voraussetzungen

Um diesen Hotfix installieren, müssen Sie SQL 2005 Service Pack 1 (SP1) auf dem Computer installiert zu können. Weitere Informationen, wie Sie SQL Server 2005 Service Pack 1 erhalten können finden Sie im folgenden Artikel der Microsoft Knowledge Base:
913089Beziehen der neuesten Service Packs für SQL Server 2005

Informationen zum Neustart

Sie müssen den Computer nach Installation dieses Hotfixes neu starten.

Informationen zur Registrierung

Sie müssen die Registrierung ändern.

Dateiinformationen

Dieser Hotfix enthält nur die Dateien, die um die Probleme zu beheben, die in diesem Artikel aufgelistet erforderlich sind. Dieser Hotfix enthält möglicherweise nicht alle Dateien, die Sie benötigen, um ein Produkt vollständig auf den neuesten Stand zu aktualisieren.
Die englische Version dieses Hotfixes weist die Dateiattribute (oder höher Dateiattribute), die in der folgenden Tabelle aufgelistet werden. Die Datums- und Uhrzeitangaben für diese Dateien sind in Coordinated Universal Time (UTC) angegeben. Wenn Sie sich die Dateiinformationen ansehen, werden diese Angaben in die lokale Zeit konvertiert. Verwenden Sie die Registerkarte Zeitzone im Element Datum und Uhrzeit in der Systemsteuerung, um die Differenz zwischen UTC und der Ortszeit zu ermitteln.
SQL Server 2005, 32-Bit-X 86-Versionen
Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Logread.exe2005.90.2187.0398,11231-Aug 200619: 40X 86
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52031-Aug 200619: 41X 86
Microsoft.AnalysisServices.deploymentengine.dll9.0.2187.0138,01631-Aug 200619: 38X 86
Microsoft.AnalysisServices.dll9.0.2187.01,215,26431-Aug 200619: 39X 86
Microsoft.SqlServer.mgdsqldumper.dll2005.90.2187.075,55231-Aug 200619: 37X 86
Microsoft.SqlServer.SqlEnum.dll9.0.2187.0908,06431-Aug 200619: 39X 86
Msgprox.dll2005.90.2187.0197,92031-Aug 200619: 40X 86
Msmdlocal.dll9.0.2187.015,610,14431-Aug 200619: 39X 86
Msmdredir.dll9.0.2187.03,990,30431-Aug 200619: 40X 86
Replprov.dll2005.90.2187.0547,61631-Aug 200619: 41X 86
Replrec.dll2005.90.2187.0782,11231-Aug 200619: 39X 86
Sqlaccess.dll2005.90.2187.0347,93631-Aug 200619: 40X 86
Sqlagent90.exe2005.90.2187.0319,26431-Aug 200619: 39X 86
Sqlservr.exe2005.90.2187.028,961,11231-Aug 200619: 39X 86
Xpstar90.dll2005.90.2187.0292,64031-Aug 200619: 42X 86
Xpstar90.rll2005.90.2187.0152,86431-Aug 200619: 39X 86
SQL Server 2005, 64-Bit-version
Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Logread.exe2005.90.2187.0522,52801-Sep-200600: 06X 64
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52031-Aug 200619: 41X 86
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52001-Sep-200600: 02X 86
Microsoft.AnalysisServices.deploymentengine.dll9.0.2187.0138,01631-Aug 200619: 38X 86
Microsoft.AnalysisServices.dll9.0.2187.01,215,26431-Aug 200619: 39X 86
Microsoft.SqlServer.mgdsqldumper.dll2005.90.2187.075,55231-Aug 200619: 37X 86
Microsoft.SqlServer.mgdsqldumper.dll2005.90.2187.091,42401-Sep-200600: 03X 64
Microsoft.SqlServer.SqlEnum.dll9.0.2187.0875,29601-Sep-200600: 04X 86
Msgprox.dll2005.90.2187.0259,36001-Sep-200600: 05X 64
Msmdlocal.dll9.0.2187.015,610,14431-Aug 200619: 39X 86
Msmdredir.dll9.0.2187.03,990,30431-Aug 200619: 40X 86
Replprov.dll2005.90.2187.0745,24801-Sep-200600: 03X 64
Replrec.dll2005.90.2187.01,008,41601-Sep-200600: 04X 64
Sqlaccess.dll2005.90.2187.0355,10401-Sep-200600: 06X 86
Sqlagent90.exe2005.90.2187.0390,94401-Sep-200600: 06X 64
Sqlservr.exe2005.90.2187.039,341,85601-Sep-200600: 03X 64
Xpstar90.dll2005.90.2187.0540,96001-Sep-200600: 06X 64
Xpstar90.rll2005.90.2187.0153,37601-Sep-200600: 04X 64
SQL Server 2005, Itanium-Architektur version
Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Logread.exe2005.90.2187.01,095,45631-Aug 200623: 02IA-64
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52031-Aug 200619: 41X 86
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52031-Aug 200623: 01X 86
Microsoft.AnalysisServices.deploymentengine.dll9.0.2187.0138,01631-Aug 200619: 38X 86
Microsoft.AnalysisServices.dll9.0.2187.01,215,26431-Aug 200619: 39X 86
Microsoft.SqlServer.mgdsqldumper.dll2005.90.2187.075,55231-Aug 200619: 37X 86
Microsoft.SqlServer.mgdsqldumper.dll2005.90.2187.0163,10431-Aug 200623: 00IA-64
Microsoft.SqlServer.SqlEnum.dll9.0.2187.0875,29631-Aug 200623: 02X 86
Msgprox.dll2005.90.2187.0542,49631-Aug 200623: 01IA-64
Msmdlocal.dll9.0.2187.048,587,04031-Aug 200623: 01IA-64
Msmdredir.dll9.0.2187.06,237,47231-Aug 200623: 02IA-64
Replprov.dll2005.90.2187.01,617,18431-Aug 200623: 02IA-64
Replrec.dll2005.90.2187.02,141,47231-Aug 200623: 02IA-64
Sqlaccess.dll2005.90.2187.0349,47231-Aug 200623: 01IA-64
Sqlagent90.exe2005.90.2187.01,143,58431-Aug 200623: 02IA-64
Sqlservr.exe2005.90.2187.072,216,86431-Aug 200623: 01IA-64
Xpstar90.dll2005.90.2187.0951,07231-Aug 200623: 04IA-64
Xpstar90.rll2005.90.2187.0152,35231-Aug 200623: 02IA-64

Status

Microsoft hat bestätigt, dass dies ein Problem in Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind.

Weitere Informationen

Für die Abfrage im Abschnitt "Problembeschreibung" kann ein Abfrageplan, die eine partitionierte Tabelle verwendet die folgenden ähneln:
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]))
Abfrage Plan, der einer nicht partitionierten Tabelle folgendermaßen aussehen kann:
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)

Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
824684Erläuterung von Standardbegriffen bei Microsoft Softwareupdates

Weitere Informationen zu einem verwandten Problem finden Sie im folgenden Artikel der Microsoft Knowledge Base:
923849Update: Wenn Sie eine Abfrage, die auf eine partitionierte Tabelle in SQL Server 2005 verweist ausführen, kann die Abfrageleistung verringern

Eigenschaften

Artikel-ID: 924601 - Geändert am: Dienstag, 20. November 2007 - Version: 1.6
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • 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
Keywords: 
kbmt kbautohotfix kbfix kbexpertiseadvanced kbsql2005tsql kbhotfixserver kbqfe kbpubtypekc KB924601 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 924601
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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