Zugreifen auf Diagnoseinformationen im Protokoll der erweiterten Ereignisse

JDBC-Treiber herunterladen

In Microsoft JDBC-Treiber 4.0 für SQL Server erleichtert die Ablaufverfolgung (Ablaufverfolgung für Treibervorgänge) das Korrelieren von Clientereignissen mit Diagnoseinformationen. Beispielsweise können Verbindungsfehler aus dem Konnektivitätsringpuffer des Servers und Informationen zur Anwendungsleistung im Protokoll der erweiterten Ereignisse nachverfolgt werden. Informationen dazu, wie Sie das Protokoll für erweiterte Ereignisse lesen, finden Sie unter Übersicht über erweiterte Ereignisse.

Details

Bei Verbindungsvorgängen sendet Microsoft JDBC-Treiber für SQL Server eine Clientverbindungs-ID. Wenn keine Verbindung hergestellt werden kann, können Sie auf den Konnektivitätsringpuffer zugreifen, das Feld ClientConnectionID suchen und Diagnoseinformationen zum Verbindungsfehler abrufen. Weitere Informationen zum Ringpuffer finden Sie unter Beheben von Konnektivitätsproblemen in SQL Server 2008 mit dem Konnektivitätsringpuffer. Clientverbindungs-IDs werden nur im Ringpuffer protokolliert, wenn ein Fehler auftritt. Wenn vor dem Senden des prelogin-Pakets keine Verbindung hergestellt werden kann, wird keine Clientverbindungs-ID generiert.

Die Clientverbindungs-ID ist eine 16-Byte-GUID. Sie können auch die Clientverbindungs-ID in der Zielausgabe für erweiterte Ereignisse suchen, wenn Ereignissen in einer Sitzung für erweiterte Ereignisse die Aktion client_connection_id hinzugefügt wird. Wenn Sie weitere Unterstützung zur Clienttreiberdiagnose benötigen, können Sie die Ablaufverfolgung aktivieren und den Verbindungsbefehl erneut ausführen, um das Feld ClientConnectionID in der Ablaufverfolgung anzuzeigen.

Sie können die Clientverbindungs-ID programmgesteuert abrufen, und zwar mit der ISQLServerConnection-Schnittstelle. Die Verbindungs-ID ist auch in verbindungsbezogenen Ausnahmen enthalten.

Bei einem Verbindungsfehler kann die Clientverbindungs-ID in den BID-Ablaufverfolgungsinformationen (integrierte Diagnose) des Servers und im Konnektivitätsringpuffer nützlich sein, um die Clientverbindungen mit Verbindungen auf dem Server zu korrelieren. Weitere Informationen zur BID-Ablaufverfolgung auf dem Server finden Sie unter Data Access Tracing (Datenzugriffsablaufverfolgung). Der Artikel zur Datenzugriffsablaufverfolgung enthält auch Informationen zu Datenzugriffsablaufverfolgungen, die sich nicht auf Microsoft JDBC-Treiber für SQL Server beziehen. Informationen zum Ausführen einer Datenzugriffsablaufverfolgung unter Verwendung von Microsoft JDBC-Treiber für SQL Server finden Sie unter Ablaufverfolgung für Treibervorgänge.

Der JDBC-Treiber sendet außerdem eine threadspezifische Aktivitäts-ID. Die Aktivitäts-ID wird in den Sitzungen für erweiterte Ereignisse aufgezeichnet, wenn die Sitzungen bei aktivierter TRACK_CAUSAILITY-Option gestartet werden. Bei Leistungsproblemen mit einer aktiven Verbindung können Sie die Aktivitäts-ID aus der Ablaufverfolgung des Clients (Feld ActivityID) abrufen und dann in der Ausgabe der erweiterten Ereignisse nach der Aktivitäts-ID suchen.

Die Aktivitäts-ID in erweiterten Ereignissen ist eine 16-Byte-GUID (entspricht nicht der GUID für die Clientverbindungs-ID), an die eine 4-Byte-Sequenznummer angehängt ist. Die Sequenznummer stellt die Reihenfolge einer Anforderung in einem Thread dar. Die ActivityId wird bei SQL-Stapelanweisungen und RPC-Anforderungen gesendet. Zum Aktivieren des Sendens der ActivityId an den Server müssen Sie das folgende Schlüssel-Wert-Paar in der Datei „Logging.Properties“ angeben:

com.microsoft.sqlserver.jdbc.traceactivity = on

Jeder andere Wert als on (unter Beachtung der Groß-/Kleinschreibung) deaktiviert das Senden der ActivityId.

Weitere Informationen finden Sie unter Ablaufverfolgung für Treibervorgänge. Dieses Ablaufverfolgungsflag wird mit den entsprechenden JDBC-Objektprotokollierungen verwendet, um zu bestimmen, ob im JDBC-Treiber eine Ablaufverfolgung der ActivityId ausgeführt und diese gesendet werden soll. Aktivieren Sie zusätzlich zum Aktualisieren der Datei „Logging.Properties“ die Protokollierung „com.microsoft.sqlserver.jdbc“ mit dem Wert FINER oder höher. Wenn Sie die ActivityId an den Server für Anforderungen einer bestimmten Klasse senden möchten, aktivieren Sie die entsprechende Klassenprotokollierung mit dem Wert „FINER“ oder „FINEST“. Wenn die Klasse beispielsweise SQLServerStatement lautet, aktivieren Sie die Protokollierung com.microsoft.sqlserver.jdbc.SQLServerStatement.

Im folgenden Beispiel wird Transact-SQL zum Starten einer Sitzung für erweiterte Ereignisse verwendet, die in einem Ringpuffer gespeichert werden und die von einem Client in RPC- und Batchvorgängen gesendete Aktivitäts-ID erfassen:

create event session MySession on server
add event connectivity_ring_buffer_recorded,
add event sql_statement_starting (action (client_connection_id)),
add event sql_statement_completed (action (client_connection_id)),
add event rpc_starting (action (client_connection_id)),
add event rpc_completed (action (client_connection_id))
add target ring_buffer with (track_causality=on)

Weitere Informationen

Diagnostizieren von Problemen mit dem JDBC-Treiber