Update: Wenn Sie eine Abfrage ausführen, die Tabellenhinweis NOLOCK zum Abrufen von BLOB-Daten in SQL Server 2005 oder SQL Server 2008 verwendet, die Abfrage sehr langsam

Microsoft stellt Updates für Microsoft SQL Server 2005 als downloadbare Datei. Da die kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die in früheren SQL Server 2005 enthalten waren.
Microsoft stellt Updates für Microsoft SQL Server 2008 als downloadbare Datei. Da die kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2008 geliefert wurden.

Problembeschreibung

Sie haben eine Abfrage mit dem NOLOCK-Tabellenhinweis in Microsoft SQL Server 2005 oder Microsoft SQL Server 2008. Die Abfrage liest Daten von einem der folgenden Datentypen binary large Object (BLOB) aus einer großen Tabelle:
  • Text-Datentyp
  • NText-Datentyp
  • Image-Datentyp
Wenn Sie die Abfrage ausführen, ist die Abfrage sehr langsam. Wenn Sie die Datenträgeraktivität, die die Abfrage generiert untersuchen, bemerken Sie, dass die Anzahl der logischen Lesevorgänge sehr hoch ist.

Hinweis Um Aktivitäten Datenträger anzuzeigen, führen Sie die Abfrage mit SET STATISTICS IO ON-Klausel.

Ursache

Wenn die Abfrage, die der NOLOCK-Tabellenhinweis verwendet, BLOB-Daten liest, überprüft SQL Server jede Seite BLOB anhand der entsprechenden Index Allocation Map (IAM) zugeordnet ist. Die IAM ist eine verknüpfte Liste Reservierungsseiten. Jede IAM-Seite ungefähr 4 GB Daten enthalten kann (Seitengröße von 8 KB * 8 Seiten * 64.000 Blöcke). Wenn das Objekt groß ist, kann der Vorgang übermäßigen logische Lesevorgänge führen.

Beispielsweise können Sie ein großes Objekt Dateigruppe zugeordnet. Die Gesamtgröße der Dateien in der Dateigruppe ist 700 GB. In diesem Fall kann die IAM für dieses Objekt bis 175 Seiten enthalten. Wenn Sie jetzt eine Abfrage dieses Objekts ausführen mithilfe der NOLOCK-Tabellenhinweis und die Abfrage greift auf 10.000 BLOB-Seiten werden die Anzahl der logischen Lesevorgänge, die IAM-Seiten im Zusammenhang 175 * 10.000 = 1,750,000 im schlimmsten Fall. Findet SQL Server die entsprechende IAM-Seite durch die Hälfte der verknüpften Liste durchlaufen, werden die durchschnittliche Anzahl der logischen Lesevorgänge, die IAM-Seiten verknüpft sind etwa 1,750,000 / 2 = 875.000. Dies ist zu hoch ein Mehraufwand für eine Abfrage auf 10.000 BLOB-Seiten entstehen.

Problemlösung

Kumulative Update-Informationen für SQL Server 2005

Die Fehlerbehebung für dieses Problem wurde zuerst im kumulativen Update 3 für SQL Server 2005 Service Pack 3 veröffentlicht. Weitere Informationen zu diesem kumulativen Updatepaket für SQL Server 2005 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
967909 kumulative Updatepaket 3 für SQL Server 2005 Service Pack 3
Hinweis Da diese Builds kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die in früheren SQL Server 2005 enthalten waren. Wir empfehlen Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
960598 der SQL Server 2005 builds, die nach der Freigabe von SQL Server 2005 Service Pack 3

Kumulative Update-Informationen für SQL Server 2008

Die Fehlerbehebung für dieses Problem wurde zuerst im kumulativen Update 5 für SQL Server 2008 veröffentlicht. Weitere Informationen zu diesem kumulativen Updatepaket für SQL Server 2008 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
969531 kumulative Updatepaket 5 für SQL Server 2008
Hinweis Da diese Builds kumulativ sind, enthält jede neue Veröffentlichung alle Hotfixes und alle die Sicherheitsupdates, die in den vorherigen SQL Server 2008 Fix-Veröffentlichung enthalten waren. Wir empfehlen Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
956909 die SQL Server 2008 builds, die nach der Freigabe von SQL Server 2008

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Weitere Informationen

Die Fehlerbehebung für dieses Problem verwendet IAM Cache schnell feststellen, ob eine BLOB-Seite tatsächlich zugewiesen ist.

Weitere Dateien geändert werden und Informationen zu Komponenten das kumulative Updatepaket anwenden, das den Hotfix enthalten, der im Microsoft Knowledge Base-Artikel beschrieben, klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
967909 kumulative Updatepaket 3 für SQL Server 2005 Service Pack 3
Weitere Dateien geändert werden und Informationen zu Komponenten das kumulative Updatepaket anwenden, das den Hotfix enthalten, der im Microsoft Knowledge Base-Artikel beschrieben, klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
969531 kumulative Updatepaket 5 für SQL Server 2008

Referenzen

Informationen zur Liste der Builds, die nach SQL Server 2005 Service Pack 3 verfügbar sind, klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

960598 der SQL Server 2005 builds, die nach der Freigabe von SQL Server 2005 Service Pack 3

Weitere Informationen zur Liste der SQL Server 2008 verfügbaren Builds klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

956909 die SQL Server 2008 builds, die nach der Freigabe von SQL Server 2008

Weitere Informationen zum inkrementellen Dienstmodell für SQL Server klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

935897 erläutert wird ein inkrementelles Dienstmodell steht der SQL Server-Team zu Hotfixes für gemeldete Probleme

Weitere Informationen zum Benennungsschema für SQL Server-Updates klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

Neues Benennungsschema für Microsoft SQL Server-Software 822499 Pakete aktualisieren

Um weitere Informationen zur Terminologie für Softwareupdates zu erhalten, klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
824684 Erläuterung von der standardmäßigen Standardbegriffen bei Microsoft Softwareupdates
Eigenschaften

Artikelnummer: 961049 – Letzte Überarbeitung: 13.01.2017 – Revision: 1

Feedback