Diagnose in SQL Server feststellen, angehaltene und fixierte e/a-Vorgänge

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 897284
Zusammenfassung
Ein Datenbank-Managementsystem (DBMS) wie SQL Server abhängig die Aktualität der Dateiein- und Ausgabe (e/a) Vorgänge ist. Die folgenden Elemente stecken oder angehaltene Ausgabeoperationen verursachen und SQL Server Reaktionsfähigkeit und Leistung beeinträchtigen:

  • Fehlerhafte hardware
  • Falsch konfigurierte hardware
  • Firmware-Einstellungen
  • Filtertreiber
  • Komprimierung
  • Fehler
  • Sonstiges im e/a-Pfad
Diese e/a-Probleme möglicherweise das folgende Verhalten auftreten:

  • Blockieren
  • Latch-Inhalts und Timeouts
  • Langsame Reaktionszeiten
  • Ressource Berandungen Strecken
Ab Microsoft SQL Server 2000 Service Pack 4 (SP4) enthält SQL Server Logik hilft bei der Ermittlung angehalten und für Datenbank-e/a-Lesevorgänge und Schreibvorgänge und Protokoll Datei e/a-Lesevorgänge und Schreibvorgänge fest. Wenn ein e/a-Vorgang Ausstehend für 15 Sekunden oder mehr wurde, führt SQL Server die folgenden Schritte aus:

  1. Erkennt, dass der Vorgang ausstehend wurde
  2. Schreibt eine Meldung in das Fehlerprotokoll von SQL Server

    Der Text der Nachricht Protokoll folgendermaßen aussehen:

    2004-11-11 00:21:25.26 aufgetreten spid1 SQL Server 192 Vorkommen der e/a-Anfragen länger als 15 Sekunden auf Datei [E:\SEDATA\stressdb5.ndf] [Stressdb] (7) Datenbank beendet. Betriebssystem-Dateihandle ist 0x00000000000074D4. Der Offset des neuesten lange e/a: 0x00000000022000 ".

Information Beschreibung

NachrichtentextBeschreibung
Anzahl > VorkommenDie Anzahl der e/a-Anfragen, die nicht den Lese- oder Schreibvorgang in weniger als 15 Sekunden abgeschlossen wurde.
DateiinformationenDer vollständige Dateiname, den Namen und die Datenbank-Identifizierungsnummer (DBID).
BehandelnDas Betriebssystemhandle der Datei. Das Betriebssystemhandle können Debugger oder mit anderen Dienstprogrammen Sie die e/a-Anforderung Paket (IRP) Anfragen verfolgen.
OffsetDer Offset des letzten e/a-Vorgangs fest oder der letzten e/a-Vorgang blockiert. Den Offset können Debugger oder mit anderen Dienstprogrammen Sie die IRP-Anfragen verfolgen.

Hinweis Wenn die Meldung in das SQL Server-Fehlerprotokoll geschrieben, Vorgang nicht hängen oder angehalten.
Diese Meldung gibt an, dass die aktuelle Auslastung eine der folgenden Ursachen auftreten kann:

  • Die Arbeitslast wird der i/o-Datenpfade überschritten.
  • Die Arbeitslast übertrifft die aktuellen Systemeigenschaften.
  • E/a-Pfad hat fehlerhafte Software. Vielleicht Firmware oder einen Treiber vor.
  • E/a-Pfad hat fehlerhafte Hardware-Komponenten.
Weitere Informationen zu SQL Server 2000 e/a-Mustern finden Sie auf folgender Microsoft-Website:Hinweis TechNet-Artikel gilt für Microsoft SQL Server 2005 und höheren Versionen.
Weitere Informationen

Fixierte e/A- und angehaltene e/a

Fixierte o

Fixierte o ist definiert als eine e/a-Anforderung, die nicht beendet wird. Häufig gibt stecken o stecken IRP an. Um eine fixierte e/a-Problem zu lösen, müssen in der Regel starten Sie den Computer oder eine ähnliche Aktion. Eine fixierte e/a-Bedingung gibt i. d. r. Folgendes:

  • Fehlerhafte hardware
  • Ein Fehler in einer Komponente der e/a-Pfad

Angehaltene o

Angehaltene o ist definiert als eine e/a-Anforderung, die abgeschlossen oder, die übermäßige Zeit. Angehaltene o Verhalten tritt in der Regel aus einem der folgenden Gründe:

  • Der Hardware-Konfiguration
  • Firmware-Optionen
  • Ein Treiberproblem Filter, die Hilfe aus den Hardware- oder Softwarehersteller und beheben

SQL Server i/o angehalten und o Aufzeichnung und Meldung fest

Microsoft SQL Server Unterstützung behandelt viele Fälle jährlich, die angehaltene oder fixierten e/a-Probleme betreffen. Diese e/a-Probleme auf unterschiedliche Weise angezeigt werden. E/a-Probleme sind einige der Probleme zu diagnostizieren und zu debuggen und erfordern erhebliche Zeit und Ressourcen für das Debuggen von Microsoft und dem Kunden. Berichtsfunktionen, die SQL Server 2000 SP4 und höher, erheblich hinzugefügt wurden, reduzieren die Zeit eine e/a-Problem identifiziert.

Die Berichterstattung und die Aufzeichnung der e/a-Anfragen dienen pro Datei. Die Erkennung und Meldung von angehaltene und fixierte o sind zwei verschiedene Aktionen.

Aufzeichnung

Es gibt zwei Momente eine Aktion Datensatz in tritt SQL Server. Die erste ist beim Vorgang tatsächlich beendet wird. Nimmt eine e/a-Anforderung mehr als 15 Sekunden abgeschlossen, wird eine Datensatz-Operation. Das zweite Flächenmoment wird der lazy Writer ausgeführt wird. Wenn lazy Writer ausgeführt wird, alle ausstehenden Daten und alle ausstehenden Protokoll lazy Writer überprüft Datei-e/a-Anfragen. Wenn die 15 Sekunden überschritten, wird eine Datensatz-Operation.

Reporting

Reporting tritt in Abständen, die mindestens 5 Minuten auseinander. Reporting tritt bei die nächste e/a-Anforderung für die Datei. Datensatz-Aktion und mindestens 5 Minuten vergangen seit der letzte Bericht aufgetreten ist, die im Abschnitt "Zusammenfassung" genannte Meldung im SQL Server-Fehlerprotokoll geschrieben wird.

15-Sekunden-Schwellenwert ist nicht einstellbar. Jedoch können Sie angehaltene oder fixierte e/a-Erkennung deaktivieren mit Ablaufverfolgungsflag 830, obwohl es nicht empfehlen, dies zu tun.

Deaktivieren Erkennung Wenn SQL Server gestartet wird, verwenden die -T830 Erkennung deaktivieren, bei jedem Start dieser SQL Server-Startparameter. Deaktivieren Erkennung für eine Instanz von SQL Server, das ausgeführt wird, verwenden Sie die folgende Anweisung:

DBCC Traceoff (830, -1)
Diese Einstellung gilt nur für die Dauer des SQL Server-Prozesses.

Hinweis Eine e/a-Anforderung, die angehalten oder hängen wird nur einmal gemeldet. Beispielsweise sollte die Meldung blockiert sind, 10 e/a-Anfragen, treten die 10-Berichte nicht erneut. Sollte die nächste Nachricht 15 e/a-Anfragen blockiert sind, also 15 neue e/a-Anfragen angehalten werden.

Überwachen das e/a-Anforderungspaket (IRP)

SQL Server verwendet den standardmäßigen Microsoft Windows API-Aufrufe zum Lesen und Schreiben von Daten. SQL Server verwendet z. B. die folgenden Funktionen:

  • WriteFile
  • ReadFile
  • WriteFileScatter
  • ReadFileGather
Die Anforderung Lese- oder Schreibvorgang wird von Windows als ein e/a-Anforderungspaket (IRP) behandelt. Bestimmen Sie den Status der IRP verwenden Sie Folgendes:

  • Microsoft-Plattform-Unterstützung
  • Der Kernel-debugger
Weitere Informationen über IRP und IRP verfolgen, klicken Sie auf der folgenden Microsoft-Website unter dem Stichwort "IRP":Hinweis Kernel-Debugger kann invasive Prozess zurückzuführen Kerneldebuggen um das debugging Aktionen beendet werden kann. Wir empfehlen, dass Sie alle verfügbaren Updates für die folgenden Elemente überprüfen:

  • Das BIOS
  • Die firmware
  • Andere Komponenten des e/a-Pfad
Bevor Sie zusätzliche Debuginformationen Aktionen durchführen, wenden Sie sich an den Hardwarehersteller. Die Debugsitzung wird wahrscheinlich eine Fremdanbieter-Treiber, Firmware oder Filter-Komponente umfassen.

Systemleistung und Plan Abfrageaktionen

Insgesamt kann Systemleistung e/a-Verarbeitung eine wichtige Rolle spielen. Den allgemeinen Zustand des Systems sollten Sie bei der Untersuchung von Berichten angehaltene oder fixierte Ausgabeoperationen berücksichtigen. Übermäßige Auslastung kann das Gesamtsystem langsam. Dies beinhaltet die e/a-Verarbeitung. Das Verhalten des Systems zum Zeitpunkt des Fehlers kann ein wichtiger Faktor bei der Bestimmung der Ursache des Problems sein. Beispielsweise wird CPU-Auslastung hoch oder CPU-Auslastung hoch bleibt, tritt das Problem auf, dieses Verhalten möglicherweise ein Prozess auf dem System so viel CPU verwendet, dass andere Prozesse beeinträchtigt wird.

Leistungsindikatoren

Überwachen der e/a-Leistung untersuchen Sie die folgenden Leistungsindikatoren für i/o-Pfad-Informationen:

  • Durchschnittliche Sek./Übertragung
  • Durchschnittliche Warteschlangenlänge
  • Aktuelle Warteschlangenlänge
Mittlere Sek./Übertragung Zeit auf einem Computer mit SQL Server ist z. B. in der Regel weniger als 15 Millisekunden. Wenn der Mittlere Sek./Übertragung Wert steigt, bedeutet dies, dass e/a-Subsystem nicht optimal mit e/a-Anforderung halten wird.

Seien Sie vorsichtig, wenn Sie Leistungsindikatoren verwenden, da SQL Server vollständige asynchrone e/a-Funktionen nutzt, die Datenträger-Warteschlangenlängen stark drücken. Daher werden mehr Datenträger-Warteschlangenlängen allein kein Problem dar.

Im Windows-Systemmonitor können Leistungsindikatoren überprüfen "Physikalischer Datenträger: Bytes/s" für jeden betroffenen Datenträger und vergleichen die Rate gegen die Leistungsindikatoren "Prozess: IO Datenbytes/Sek." und "Prozess: IO anderer Bytes/s" für jeden Prozess zu ermitteln, ob ein bestimmter Satz von Prozessen übermäßige o generieren anfordert. Verschiedene o zusammengehörende im Prozess verfügbaren Leistungsindikatoren-Objekt ergibt, detaillierteren Informationen. Wenn Sie feststellen, dass eine SQL Server-Instanz für eine übermäßige e/a-Belastung des Servers verantwortlich ist, überprüfen Sie den nächsten Abschnitt "Indizes und Parallelität". Ausführliche Informationen zum Erkennen und Beseitigen von e/a-Engpässen lesen Sie den Abschnitt "E/a-Engpässe" im MSDN-whitepaper Behandeln von Leistungsproblemen in SQL Server 2008 oder: Behandlung von Leistungsproblemen in SQLServer 2005.

Indizes und Parallelität

Bursts o auftreten, ein Index vorhanden ist. Dieses Verhalten kann schwerwiegend e/a-Pfad ablegen. Erfolgreich, die den Index aktivieren-Assistent (ITW) können e/a-Belastung des Systems zu beheben. Wenn eine Abfrage aus einem Index statt einen Tabellenscan Vorteile oder vielleicht eine Sortier- oder Hashoperationen verwendet das System die folgenden Vorteile erhalten:

  • Eine Verringerung erfolgt die physische e/a­Operationen, die erforderlich sind, um diesen Vorgang abzuschließen, die Leistungsvorteile für die Abfrage direkt erstellt.
  • Weniger Seiten im Datencache übergeben werden müssen. Daher bleiben die Seiten im Datencache für aktive Abfragen.
  • Sortiert und Hashes wird ein Index fehlt möglicherweise oder Statistiken veraltet sind. Sie reduzieren tempdb Verwendung und Konflikte durch einen oder mehrere Indizes hinzufügen.
  • Eine Verringerung erfolgt Ressourcen oder parallele Vorgänge. Da SQL Server keine parallele Ausführung garantiert, und die Auslastung des Systems gilt, empfiehlt es sich, alle Abfragen für serielle Ausführung optimieren. Um eine Abfrage zu optimieren, öffnen Sie Query Analyzer, und legen Sie die Sp_configure-Wert von der Max. Grad an Parallelität Option 1. Alle Abfragen optimiert werden, um rasch eine serielle Operation auszuführen ist paralleler Ausführung häufig nur ein besseres Ergebnis. Jedoch oft parallele Ausführung ist ausgewählt, da die Datenmenge nur groß ist. Bei einem fehlenden Index möglicherweise eine große Art auftreten. Mehrere Arbeitskräfte, die den Sortiervorgang durchführen werden eine schnellere Antwort erstellt. Jedoch kann dadurch Druck auf das System erheblich erhöhen. Große Leseanfragen viele Mitarbeiter können mehrere Mitarbeiter ein o Burst mit erhöhten CPU-Auslastung verursachen. Schneller und weniger Ressourcen verwenden, wenn ein Index hinzugefügt wird oder andere Optimierung Aktion stattfindet, kann oft eine Abfrage optimiert werden.

Praktische Beispiele von Microsoft SQL Server

In den folgenden Beispielen wurden von Microsoft SQL Server Unterstützung und Plattformen Eskalation behandelt. Diese Beispiele sollen einen Rahmen und Hilfesatz ungewöhnlich angehalten und e/a-Situationen fest und darüber, wie ein System beeinträchtigt werden oder möglicherweise reagieren. Es ist keine spezielle Hardware oder Treiber, die über ein anderes Risiko oder erhöhte Risiko darstellen. Alle Systeme sind in dieser Hinsicht.

Beispiel 1: Ein Protokoll schreiben, das 45 Sekunden fest

Eine SQL Server-Protokolldatei regelmäßig schreiben wird für ungefähr 45 Sekunden fest. Protokoll schreiben wird nicht rechtzeitig abgeschlossen. Dies erstellt eine blockierende Bedingung, die 30-Sekunden-Client Timeouts verursacht.

Antrag eine Commit auf SQL Server und Commit wurde als ausstehende Schreibvorgänge Protokoll fest. Dieses Verhalten führt die Abfrage weiterhin sperren und eingehende Anfragen von anderen Clients. Starten anderen Timeout. Diese Verbindungen das Problem, weil die Anwendung nicht offene Transaktionen zurückgesetzt ist ein Abfragetimeout auftritt. Dadurch werden Hunderte von offenen Posten, die Sperren enthalten. Daher wird eine schwere blockierende Situation.

Weitere Informationen zur Buchung behandeln und blockieren finden Sie in folgenden Artikel der Microsoft Knowledge Base:Die Anwendung Dienste eine Website mithilfe von Verbindungspooling. Weitere Anschlüsse blockiert werden, erstellt die Website mehr Verbindungen. Diese Verbindung blockiert und der Zyklus wird.

Nach ungefähr 45 Sekunden beendet das Protokoll schreiben. Allerdings werden diese Zeit Hunderte von Verbindungen gesichert. Blockierende Probleme verursachen einige Minuten Wiederherstellungszeit für SQL Server und der Anwendung. Zusammen mit der Anwendung von hat angehaltene e/a-Bedingung sehr negativ auf das System.
Lösung
Dieses Problem wurde auf eine fixierte o Host Bus Adapter (HBA) Treiber nachverfolgt. Der Computer hat mehrere HBAs mit Failover-Unterstützung. Einen HBA war oder keine Kommunikation mit Storage Area Network (SAN), wurde der Timeoutwert "Wiederholen vor dem Failover" Sekunden konfiguriert. Wenn das Timeout überschritten wurde, wurde die e/a-Anforderung an den zweiten HBA weitergeleitet. Der zweite HBA verarbeitet die Anforderung und schnell abgeschlossen. Zur Vermeidung solcher Leiden Stall empfohlen Hardwarehersteller Einstellung "vor dem Failover Wiederholen" 5 Sekunden.

Beispiel 2: Filter Triebfahrzeugführers

Viele Antivirusprogramme und backup-Produkte verwenden e/a-Filtertreiber. Diese e/a-Filtertreiber Teil e/a-Anforderung Stapel und haben Zugriff auf die IRP-Anforderung. Microsoft Product Support Services hat verschiedene Probleme Fehler erstellen e/a-Bedingung fest oder e/a-Bedingung in einer Implementierung eines Filter-Treiber blockiert.

Eine solche Bedingung wurde ein Filtertreiber für backup verarbeiten, die eine Sicherung der Dateien, die geöffnet beim Sichern waren. Der Systemadministrator hat das SQL Server-Datenverzeichnis Datei in der Datei enthalten. Die Sicherung versucht beim Sichern, das richtige Bild der Datei zur Zeit sammeln die Sicherung gestartet. Dadurch verzögert e/a-Anfragen. E/a-Anfragen durften nur einzeln beenden, als sie von der Software behandelt wurden.

Beim Start der Sicherung gelöscht SQL Server Performance erheblich, da Ausgaben von SQL Server mussten einzeln beenden. Um das Problem zu kompensieren, wurde die Logik "einzeln", Vorgang nicht asynchron ausgeführt werden konnte. Daher, wenn SQL Server eine e/a-Anforderung und erwartet, die Arbeitskraft steckte in der Lese- oder Schreibzugriff Aufruf bis e/a-Anforderung abgeschlossen. Verarbeitungsaufgaben wie eine SQL Server-Read-ahead wurden durch die Aktionen der Filtertreiber deaktiviert. Außerdem Links eines anderen Fehlers in der Filtertreiber "einzeln" Aktionen im Prozess, auch wenn die Sicherung abgeschlossen wurde. Die einzige Möglichkeit zum Wiederherstellen von SQL Server-Leistung war schließen und erneuten Öffnen der Datenbank oder SQL Server neu starten, damit das Datei-Handle wurde freigegeben und ohne Filter Driver Aktivität beendet.
Lösung
Um dieses Problem zu beheben, wurden die SQL Server-Datendateien vom backup Datei entfernt. Herstellung der Software behoben auch das Problem, das die Datei im Modus "einzeln".

Beispiel 3: Fehler

Viele High-End-Systeme haben Mehrkanal e/a-Pfade zum Lastenausgleich oder ähnliche Aktivitäten behandelt. Microsoft Product Support Services hat Probleme mit der eine e/a-Anforderung fehlschlägt, wobei die Software behandelt den Fehlerzustand nicht korrekt gefunden. Die Software kann unbegrenzte Versuche versuchen. Vorgang wird fest und SQL Server die angegebene Aktion kann nicht abgeschlossen werden. Wie das Protokoll schreiben zuvor beschriebenen Zustand können schlechte Systemverhalten auftreten, wenn eine solche Bedingung System Keile.
Lösung
Um dieses Problem zu beheben, ist oft Neustart von SQL Server erforderlich. In einigen Fällen jedoch müssen Sie das Betriebssystem wiederherstellen Verarbeitung starten. Es wird empfohlen, ein Software-Update vom e/a-Hersteller erhalten.

Beispiel 4: Remotespeicher, Spiegelung und RAID-Laufwerke

Viele Systeme verwenden Spiegelung oder ähnliche Schritte um Datenverlust zu vermeiden. Einige Systeme, die Spiegelung verwenden, basieren auf Software und Hardware-basierte einige. Latenzzeit ist die Situation, die normalerweise vom Microsoft Support für diese Systeme erkannt wird.

Zunahme der e/a-Zeit tritt auf, wenn die e/a auf den Spiegel enden muss, bevor der e/a als abgeschlossen angesehen wird. Remote-Spiegelung Installationen können Netzwerk-Versuche einbezogen werden. Wenn Laufwerk Fehler auftreten und das Raid-System neu, kann e/a-Muster auch unterbrochen.
Lösung
Strenge Konfigurationen müssen zur Verringerung der Latenz Spiegelung oder RAID-Wiederherstellung Operationen.

Informationen Sie weitere die Vorschriften für SQL Server unterstützt remote-Spiegelung von Benutzerdatenbanken.

Beispiel 5: Komprimierung

Microsoft unterstützt nicht Microsoft SQL Server 7.0 oder Microsoft SQL Server 2000-Datendateien und Protokolldateien auf komprimierten Laufwerken. NTFS-Komprimierung ist nicht für SQL Server, da NTFS-Komprimierung Protokoll schreiben vor Protokollierung (WAL) unterbrochen. NTFS-Komprimierung ist auch verbesserte Verarbeitung für jede e/a-Operation erforderlich. Komprimierung erstellt "einzeln" wie Verhalten, bei dem schwerwiegende Leistungsprobleme auftreten.
Lösung
Um dieses Problem zu beheben, dekomprimiert die Daten und Protokolldateien.

Informationen Sie weitere Beschreibung der Unterstützung für SQL Server-Datenbanken auf komprimierten Datenträgern.

Zusätzliche Daten

PAGEIOLATCH_ * und Writelog Wartezeiten in dm_os_wait_stats dynamische Verwaltungsansichten (DMV) sind wichtige Indikatoren i/o-Pfad-Performance zu untersuchen. Wenn erhebliche PAGEIOLATCH wartet angezeigt wird, bedeutet dies, dass SQL Server auf die e/a-Subsystem wartet. Eine gewisse PAGEIOLATCH wartet ist typisch und Verhalten. Allerdings sind die durchschnittlichen PAGEIOLATCH Wartezeiten ständig größer als 10 Millisekunden (ms), sollten Sie untersuchen kommt das e/a-Subsystem unter Druck. Weitere Informationen finden Sie in folgenden Dokumenten:



SQL Server erfordert, dass Systeme unterstützen "Übertragung auf stabilen Media garantiert" gemäß Erforderliche Programm SQL Server o Zuverlässigkeit. Weitere Informationen zu den Eingabe- und Ausgabeparameter für die SQL Server-Datenbank-Engine finden Sie in folgendem Artikel der Microsoft Knowledge Base:

E/a-EventID 833

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 897284 – Letzte Überarbeitung: 09/30/2015 15:59:00 – Revision: 1.0

Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Enterprise Core, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Business Intelligence, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

  • kbinfo kbtshoot kbsqlserv2000sp4fea kbmt KB897284 KbMtde
Feedback