Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der SQL Server Native Client ODBC-Treiber kann zwei Arten von Leistungsdaten profilen:
Lange ausgeführte Abfragen.
Der Treiber kann in eine Protokolldatei schreiben, bei der keine Antwort vom Server innerhalb eines bestimmten Zeitraums abgerufen wird. Anwendungsprogrammierer oder Datenbankadministratoren können dann jede protokollierte SQL-Anweisung recherchieren, um zu bestimmen, wie sie die Leistung verbessern können.
Treiberleistungsdaten.
Der Treiber kann Leistungsstatistiken aufzeichnen und entweder in eine Datei schreiben oder sie über eine treiberspezifische Datenstruktur namens SQLPERF für eine Anwendung verfügbar machen. Die Datei, die die Leistungsstatistiken enthält, ist eine datei mit Tabstopptrennzeichen, die einfach mit jeder Kalkulationstabelle analysiert werden kann, die tabstopptrennte Dateien unterstützt, z. B. Microsoft Excel.
Eine der folgenden Profilerstellungstypen kann aktiviert werden:
Herstellen einer Verbindung mit einer Datenquelle, die die Protokollierung angibt.
Aufrufen von SQLSetConnectAttr zum Festlegen treiberspezifischer Attribute, die die Profilerstellung steuern.
Jeder Anwendungsprozess erhält eine eigene Kopie des SQL Server Native Client ODBC-Treibers und die Profilerstellung ist global für die Kombination einer Treiberkopie und eines Anwendungsprozesses. Wenn in der Anwendung Profilerstellung aktiviert wird, zeichnet die Profilerstellung Informationen für alle Verbindungen auf, die im Treiber von dieser Anwendung aktiv sind. Auch Verbindungen, die nicht speziell profilieren, sind enthalten.
Nachdem der Treiber ein Profilerstellungsprotokoll geöffnet hat (entweder die Leistungsdaten oder das Lange ausgeführte Abfrageprotokoll), wird das Protokoll erst geschlossen, wenn der Treiber vom ODBC-Treiber-Manager entladen wird, wenn eine Anwendung alle Umgebungshandles freigibt, die sie im Treiber geöffnet hat. Wenn die Anwendung ein neues Umgebungshandle öffnet, wird eine neue Kopie des Treibers geladen. Wenn die Anwendung dann entweder eine Verbindung mit einer Datenquelle herstellt, die dieselbe Protokolldatei angibt, oder legt die treiberspezifischen Attribute fest, um sich bei derselben Datei anzumelden, überschreibt der Treiber das alte Protokoll.
Wenn eine Anwendung mit der Profilerstellung zu einer Protokolldatei beginnt und eine zweite Anwendung versucht, die Profilerstellung für dieselbe Protokolldatei zu starten, kann die zweite Anwendung keine Profilerstellungsdaten protokollieren. Wenn die zweite Anwendung die Profilerstellung startet, nachdem die erste Anwendung den Treiber entladen hat, überschreibt die zweite Anwendung die Protokolldatei aus der ersten Anwendung.
Wenn eine Anwendung eine Verbindung mit einer Datenquelle herstellt, die Profilerstellung aktiviert ist, gibt der Treiber SQL_ERROR zurück, wenn die Anwendung SQLSetConnectOption aufruft, um die Protokollierung zu starten. Ein Aufruf von SQLGetDiagRec gibt dann Folgendes zurück:
SQLState: 01000, pfNative = 0
ErrorMsg: [Microsoft][SQL Server Native Client]
An error has occurred during the attempt to access
the log file, logging disabled.
Der Treiber beendet die Erfassung von Leistungsdaten, wenn ein Umgebungshandle geschlossen wird. Wenn eine SQL Server Native Client-Anwendung über mehrere Verbindungen verfügt, jedes mit einem eigenen Umgebungshandle, beendet der Treiber das Sammeln von Leistungsdaten, wenn eine der zugehörigen Umgebungshandles geschlossen wird.
Die Leistungsdaten des Treibers können entweder in der SQLPERF-Datenstruktur gespeichert oder in einer durch Tabstopp getrennten Datei protokolliert werden. Die Daten enthalten die folgenden Kategorien von Statistiken:
Anwendungsprofil
Verbindung
Netzwerk
Uhrzeit
In der folgenden Tabelle gelten die Beschreibungen der Felder in der SQLPERF-Datenstruktur auch für die statistiken, die in der Leistungsprotokolldatei aufgezeichnet wurden.
Anwendungsprofilstatistik
| SQLPERF-Feld | BESCHREIBUNG |
|---|---|
| TimerResolution | Minimale Auflösung der Taktzeit des Servers in Millisekunden. Dies wird in der Regel als 0 (Null) gemeldet und sollte nur berücksichtigt werden, wenn die gemeldete Zahl groß ist. Wenn die mindeste Auflösung der Serveruhr größer als das wahrscheinliche Intervall für einige der zeitgeberbasierten Statistiken ist, könnten diese Statistiken aufgeblasen werden. |
| SQLidu | Anzahl der INSERT-, DELETE- oder UPDATE-Anweisungen nach SQL_PERF_START. |
| SQLiduRows | Anzahl der INSERT-, DELETE- oder UPDATE-Anweisungen nach SQL_PERF_START. |
| SQLSelects | Die Anzahl der SELECT-Anweisungen, die nach SQL_PERF_START verarbeitet wurden. |
| SQLSelectRows | Die Anzahl der zeilen, die nach SQL_PERF_START ausgewählt wurden. |
| Transaktionen | Anzahl der Benutzertransaktionen nach SQL_PERF_START, einschließlich Rollbacks. Wenn eine ODBC-Anwendung mit SQL_AUTOCOMMIT_ON ausgeführt wird, wird jeder Befehl als Transaktion betrachtet. |
| SQLPrepares | Die Anzahl der SQLPrepare-Funktionsaufrufe nach SQL_PERF_START. |
| ExecDirects | Anzahl der SQLExecDirect-Aufrufe nach SQL_PERF_START. |
| SQLExecutes | Anzahl der SQLExecute-Aufrufe nach SQL_PERF_START. |
| CursorOpens | Häufigkeit, mit der der Treiber einen Servercursor nach SQL_PERF_START geöffnet hat. |
| CursorSize | Die Anzahl der Zeilen in den Resultsets, die nach SQL_PERF_START von Cursorn geöffnet werden. |
| CursorUsed | Die Anzahl der Zeilen, die tatsächlich vom Treiber nach SQL_PERF_START abgerufen wurden. |
| PercentCursorUsed | Entspricht "CursorUsed/CursorSize". Wenn beispielsweise eine Anwendung bewirkt, dass der Treiber einen Servercursor öffnet, um "SELECT COUNT(*) FROM Authors" auszuführen, befinden sich 23 Zeilen im Resultset für die SELECT-Anweisung. Wenn die Anwendung dann nur drei dieser Zeilen abruft, ist CursorUsed/CursorSize 3/23, sodass PercentCursorUsed 13.043478 ist. |
| AvgFetchTime | Entspricht SQLFetchTime/SQLFetchCount. |
| AvgCursorSize | Entspricht CursorSize/CursorOpens. |
| AvgCursorUsed | Entspricht CursorUsed/CursorOpens. |
| SQLFetchTime | Kumulierte Zeitdauer, die für den Abschluss von Servercursorn benötigt wurde. |
| SQLFetchCount | Anzahl der Abrufe für Servercursor nach SQL_PERF_START. |
| CurrentStmtCount | Die Anzahl der Anweisungshandles, die derzeit für alle verbindungen geöffnet sind, die im Treiber geöffnet sind. |
| MaxOpenStmt | Maximale Anzahl gleichzeitig geöffneter Anweisungshandles nach SQL_PERF_START. |
| SumOpenStmt | Anzahl der Anweisungshandles, die nach SQL_PERF_START geöffnet wurden. |
| Verbindungsstatistiken: | |
| CurrentConnectionCount | Die aktuelle Anzahl der aktiven Verbindungshandles, die die Anwendung auf dem Server geöffnet hat. |
| MaxConnectionsOpened | Maximale Anzahl gleichzeitiger Verbindungsziehpunkte, die nach SQL_PERF_START geöffnet wurden. |
| SumConnectionsOpened | Summe der Anzahl der Verbindungspunkte, die nach SQL_PERF_START geöffnet wurden. |
| SumConnectionTime | Summe der Zeitspanne, die alle Verbindungen nach SQL_PERF_START geöffnet wurden. Wenn beispielsweise eine Anwendung 10 Verbindungen geöffnet und jede Verbindung 5 Sekunden lang verwaltet hat, beträgt SumConnectionTime 50 Sekunden. |
| AvgTimeOpened | Entspricht "SumConnectionsOpened/SumConnectionTime". |
| Netzwerkstatistiken: | |
| ServerRndTrips | Die Häufigkeit, mit der der Treiber Befehle an den Server gesendet und eine Antwort erhalten hat. |
| BuffersSent | Anzahl der TDS-Pakete (Tabular Data Stream), die nach SQL_PERF_START vom Treiber an SQL Server gesendet wurden. Große Befehle können mehrere Puffer annehmen. Wenn also ein großer Befehl an den Server gesendet wird und sechs Pakete gefüllt wird, wird ServerRndTrips um eins erhöht, und BuffersSent wird um sechs erhöht. |
| BuffersRec | Die Anzahl der TDS-Pakete, die vom Treiber von SQL Server empfangen wurden, nachdem die Anwendung mit dem Treiber begonnen hat. |
| BytesSent | Die Anzahl der Bytes, die an SQL Server in TDS-Paketen gesendet wurden, nachdem die Anwendung mit dem Treiber begonnen hat. |
| BytesRec | Anzahl der Daten in TDS-Paketen, die vom Treiber von SQL Server empfangen wurden, nachdem die Anwendung mit der Verwendung des Treibers begonnen hat. |
Zeitstatistiken
| SQLPERF-Feld | BESCHREIBUNG |
|---|---|
| msExecutionTime | Kumulierter Zeitraum, den der Treiber nach SQL_PERF_START verarbeitet hat, einschließlich der Zeit für das Warten auf Antworten vom Server. |
| msNetworkServerTime | Kumulierte Zeitspanne, die der Treiber auf Antworten vom Server ausgegeben hat. |
Siehe auch
SQL Server Native Client (ODBC)
Profilerstellung von ODBC-Treibern – Themen zur Leistungsoptimierung (ODBC)