Přístup k diagnostickým informacím v protokolu rozšířených událostí
V ovladači Microsoft JDBC 4.0 pro SQL Server trasování (operace ovladače trasování) usnadňuje korelaci klientských událostí s diagnostickými informacemi. Například výpadky připojení z kruhového bufferu připojení serveru a informace o výkonu aplikace v protokolu rozšířených událostí lze sledovat. Informace o čtení protokolu rozšířených událostí naleznete v tématu rozšířené události.
Podrobnosti
V případě operací připojení odešle ovladač Microsoft JDBC pro SQL Server ID připojení klienta. Pokud připojení selže, můžete získat přístup k vyrovnávací paměti připojení a najít pole ClientConnectionID a získat diagnostické informace o selhání. Další informace o kružnicové vyrovnávací paměti naleznete v tématu řešení potíží s připojením v systému SQL Server 2008 s připojovací kružnicovou vyrovnávací pamětí. ID připojení klienta se protokolují do kruhové vyrovnávací paměti pouze v případě, že dojde k chybě. Pokud se připojení nezdaří před odesláním paketu preloginu, ID připojení klienta se nevygeneruje.
ID připojení klienta je 16bytový identifikátor GUID. Pokud se akce client_connection_id přidá do událostí v relaci rozšířených událostí, ID připojení klienta bude v cílovém výstupu rozšířených událostí. Pokud potřebujete další diagnostiku klientských ovladačů, můžete povolit trasování a znovu spustit příkaz připojení, abyste viděli pole ClientConnectionID v trasování.
ID připojení klienta můžete získat programově pomocí ISQLServerConnection Interface. ID připojení bude také k dispozici v jakýchkoli výjimkách souvisejících s připojením.
Pokud dojde k chybě připojení, ID připojení klienta v informacích o trasování integrované diagnostiky (BID) serveru a ve vyrovnávací paměti okruhu připojení může pomoci propojit připojení klientů k připojením na serveru. Další informace o trasování BID na serveru naleznete v tématu Trasování přístupu k datům. Poznámka: Článek o trasování přístupu k datům obsahuje také informace o trasování přístupu k datům, které se nevztahuje na ovladač Microsoft JDBC pro SQL Server; Viz Operace trasování ovladače informace o provádění trasování přístupu k datům pomocí ovladače Microsoft JDBC pro SQL Server.
Ovladač JDBC také odešle ID aktivity specifické pro vlákno. Pokud je relace spuštěna s povolenou možností TRACK_CAUSALITY, ID aktivity se zaznamenává v relaci rozšířených událostí. V případě problémů s výkonem aktivního připojení můžete ID aktivity získat z trasování klienta (pole ID aktivity) a poté ID aktivity vyhledat ve výstupu rozšířených událostí.
ID aktivity v rozšířených událostech je 16bajtový guid (není stejný jako guid pro ID připojení klienta) doplněný 4bajtovým pořadovým číslem. Pořadové číslo představuje pořadí požadavku v rámci vlákna. ActivityId se odesílá pro SQL dávkové příkazy a požadavky RPC. Pokud chcete povolit odesílání ActivityId na server, zadejte následující dvojici klíč-hodnota v souboru Logging.Properties:
com.microsoft.sqlserver.jdbc.traceactivity = on
Jakékoli jiné hodnoty než on
(rozlišují se malá a velká písmena) zakáže odesílání ID aktivity.
Další informace naleznete v tématu operace trasování ovladače. Tento příznak trasování se používá s odpovídajícími logovacími objekty JDBC k rozhodnutí, zda trasovat a odesílat Identifikátor aktivity v ovladači JDBC. Kromě aktualizace souboru Logging.Properties, povolte protokolovač com.microsoft.sqlserver.jdbc na úrovni FINER nebo vyšší. Chcete-li odeslat ID aktivity na server pro požadavky provedené určitou třídou, povolte odpovídající protokolovací nástroj třídy na úrovni FINER nebo FINEST. Například pokud je třída SQLServerStatement, povolte protokolovač com.microsoft.sqlserver.jdbc.SQLServerStatement.
Následující ukázka používá Transact-SQL ke spuštění relace rozšířených událostí, která je uložená v kruhové vyrovnávací paměti a zaznamenává ID aktivity odeslané od klienta při RPC a dávkových operacích.
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)