Sdílet prostřednictvím


Operace ovladače trasování

Stáhnout ovladač JDBC

Ovladač Microsoft JDBC pro SQL Server podporuje použití trasování (nebo protokolování) k řešení problémů a problémů s ovladačem JDBC při použití ve vaší aplikaci. K povolení použití trasování ovladač JDBC používá rozhraní API protokolování v java.util.logging, které poskytuje sadu tříd pro vytváření objektů Logger a LogRecord.

Poznámka:

Pro nativní komponentu (sqljdbc_xa.dll), která je součástí ovladače JDBC, je trasování povoleno rozhraním Built-In Diagnostics (BID). Informace o BID naleznete v tématu Trasování přístupu k datům na SQL Serveru.

Při vývoji aplikace můžete volat protokolovací objekty, které pak vytvářejí objekty LogRecord, které se pak předávají objektům obslužné rutiny ke zpracování. Objekty loggeru a obslužné rutiny používají úrovně protokolování a volitelně filtry protokolování ke stanovení, které záznamy protokolu budou zpracovány. Po dokončení operací protokolování mohou objekty obslužné rutiny volitelně použít objekty Formatter k publikování informací protokolu.

Ve výchozím nastavení java.util.logging framework zapisuje výstup do souboru. Tento výstupní soubor protokolu musí mít oprávnění k zápisu pro kontext, ve kterém je spuštěn ovladač JDBC.

Poznámka:

Další informace o používání různých objektů protokolování pro trasování programů naleznete v dokumentaci k rozhraní API pro protokolování Java na webu Sun Microsystems.

Následující části popisují úrovně protokolování a kategorie, které je možné protokolovat, a poskytují informace o povolení trasování ve vaší aplikaci.

Úrovně protokolování

Každá vytvořená zpráva protokolu má přidruženou úroveň protokolování. Úroveň protokolování určuje důležitost zprávy protokolu, která je definována úrovní třídy java.util.logging. Povolení protokolování na jedné úrovni také umožňuje protokolování na všech vyšších úrovních. Tato část popisuje úrovně protokolování pro kategorie veřejného protokolování i interní kategorie protokolování. Další informace o kategoriích protokolování najdete v části Kategorie protokolování v tomto článku.

Následující tabulka popisuje jednotlivé dostupné úrovně protokolování pro kategorie veřejného protokolování.

Název Description
HROZNĚ Označuje závažné selhání a je nejvyšší úrovní protokolování. V ovladači JDBC se tato úroveň používá k hlášení chyb a výjimek.
VAROVÁNÍ Označuje potenciální problém.
Informace Poskytuje informační zprávy.
KONFIGURACE Poskytuje zprávy konfigurace. Ovladač JDBC momentálně neposkytuje žádné konfigurační zprávy.
POKUTA Poskytuje základní trasovací informace, včetně všech výjimek vyvolaných veřejnými metodami.
JEMNĚJŠÍ Poskytuje podrobné informace o trasování, zahrnující všechny veřejné vstupní a výstupní body metod spolu s přidruženými datovými typy parametrů, a rovněž všechny veřejné vlastnosti veřejných tříd. Také vstupní parametry, výstupní parametry a návratové hodnoty metod s výjimkou CLOB, BLOB, NCLOB, Reader, <stream> návratové typy metod.
NEJLEPŠÍ Poskytuje vysoce podrobné informace o trasování. Toto nastavení je nejnižší úroveň protokolování.
Vypnuto Vypne protokolování.
ALL Povolí protokolování všech zpráv.

Následující tabulka popisuje jednotlivé dostupné úrovně protokolování pro interní kategorie protokolování.

Název Description
HROZNĚ Označuje závažné selhání a je nejvyšší úrovní protokolování. V ovladači JDBC se tato úroveň používá k hlášení chyb a výjimek.
VAROVÁNÍ Označuje potenciální problém.
Informace Poskytuje informační zprávy.
POKUTA Poskytuje trasovací informace včetně základního vytváření a destrukce objektů. Také všechny výjimky vyvolané veřejnými metodami.
JEMNĚJŠÍ Poskytuje podrobné informace o trasování, včetně všech vstupních a výstupních bodů veřejných metod spolu s datovými typy přidruženými k parametrům, a všechny veřejné vlastnosti pro veřejné třídy. Také vstupní parametry, výstupní parametry a návratové hodnoty metod kromě typů návratových hodnot CLOB, BLOB, NCLOB, Reader, <stream>.

Ve verzi 1.2 ovladače JDBC existovaly následující kategorie protokolování a měly úroveň protokolování FINE: SQLServerConnection, SQLServerStatement, XA a SQLServerDataSource. Počínaje verzí 2.0 se tyto kategorie upgradují na úroveň FINER.
NEJLEPŠÍ Poskytuje vysoce podrobné informace o trasování. Toto nastavení je nejnižší úroveň protokolování.

Ve verzi 1.2 ovladače JDBC existovaly následující kategorie protokolování a měly úroveň protokolování FINEST: TDS. DATA a TDS. TOKEN. Počínaje verzí 2.0 zachovají úroveň protokolování FINEST.
Vypnuto Vypne protokolování.
ALL Povolí protokolování všech zpráv.

Kategorie protokolování

Při vytváření objektu Logger musíte objektu sdělit, z jaké pojmenované entity nebo kategorie chcete získat informace o protokolu. Ovladač JDBC podporuje následující kategorie veřejného protokolování, které jsou definovány v balíčku ovladače com.microsoft.sqlserver.jdbc.

Název Description
Připojení Zaznamenává zprávy ve třídě SQLServerConnection . Aplikace můžou nastavit úroveň protokolování jako FINER.
Statement Zaznamenává zprávy ve třídě SQLServerStatement . Aplikace můžou nastavit úroveň protokolování jako FINER.
Zdroj dat Zaznamenává zprávy ve třídě SQLServerDataSource . Aplikace můžou nastavit úroveň protokolování jako FINE.
Výsledek Zaznamenává zprávy ve třídě SQLServerResultSet . Aplikace můžou nastavit úroveň protokolování jako FINER.
Driver Zaznamenává zprávy ve třídě SQLServerDriver . Aplikace můžou nastavit úroveň protokolování jako FINER.
Resiliency Protokoluje zprávy ve třídě SQLServerConnection, které se týkají pouze opětovného připojení během nečinnosti k posílení odolnosti připojení. Aplikace mohou nastavit úroveň protokolování jako FINE a FINER.
Redirection Zaznamenává zprávy ve třídě SQLServerConnection vztahující se pouze k otevřeným pokusům o připojení. Aplikace můžou nastavit úroveň protokolování jako FINE.

Počínaje ovladačem Microsoft JDBC verze 2.0 poskytuje ovladač také balíček com.microsoft.sqlserver.jdbc.internals, který zahrnuje podporu protokolování pro následující interní kategorie protokolování.

Název Description
OvěřováníJNI Zaznamenává zprávy o problémech s ověřováním integrovaným systémem Windows (pokud je vlastnost připojení AuthenticationScheme implicitně nebo explicitně nastavena na NativeAuthentication).

Aplikace mohou nastavit úroveň protokolování jako FINEST a FINE.
SQLServerConnection Zaznamenává zprávy ve třídě SQLServerConnection . Aplikace mohou nastavit úroveň protokolování jako FINE a FINER.
SQLServerDataSource Zaznamenává zprávy ve třídách SQLServerDataSource, SQLServerConnectionPoolDataSource a SQLServerPooledConnection .

Aplikace můžou nastavit úroveň protokolování jako FINER.
InputStream Zaznamenává zprávy o následujících datových typech: java.io.InputStream, java.io.Reader a datové typy, které mají maximální specifikátor, například varchar, nvarchar a varbinary.

Aplikace můžou nastavit úroveň protokolování jako FINER.
SQLServerException Zaznamenává zprávy ve třídě SQLServerException . Aplikace můžou nastavit úroveň protokolování jako FINE.
SQLServerResultSet Zaznamenává zprávy ve třídě SQLServerResultSet . Aplikace mohou nastavit úroveň protokolování jako FINE, FINER a FINEST.
SQLServerStatement Zaznamenává zprávy ve třídě SQLServerStatement . Aplikace mohou nastavit úroveň protokolování jako FINE, FINER a FINEST.
XA Zaznamenává zprávy pro všechny transakce XA ve třídě SQLServerXADataSource . Aplikace mohou nastavit úroveň protokolování jako FINE a FINER.
KerbAuthentication Zaznamenává zprávy o ověřování typu 4 Kerberos (pokud je vlastnost připojení AuthenticationScheme nastavená na JavaKerberos). Aplikace může nastavit úroveň protokolování jako FINE nebo FINER.
TDS.DATA Zaznamenává zprávy obsahující konverzaci na úrovni protokolu TDS mezi ovladačem a SQL Serverem. Podrobný obsah každého odesílaného a přijatého paketu TDS se protokoluje v ASCII a šestnáctkovém formátu. Přihlašovací údaje (uživatelská jména a hesla) se nezaprotokolují. Všechna ostatní data se protokolují.

Tato kategorie vytváří velmi podrobné zprávy a lze ji povolit pouze nastavením úrovně protokolování na FINEST.
TDS.Kanál Tato kategorie sleduje akce komunikačního kanálu TCP s SQL Serverem. Protokolované zprávy zahrnují otevření a uzavření soketů i čtení a zápisy. Také sleduje zprávy související s vytvořením protokolu TLS (Transport Layer Security), dříve označovaného jako SSL (Secure Sockets Layer), připojení k SQL Serveru.

Tuto kategorii lze povolit pouze nastavením úrovně protokolování na FINE, FINER nebo FINEST.
TDS. Spisovatel Tato kategorie sleduje zápisy do kanálu TDS. Trasuje se pouze délka zápisů, nikoli obsah. Tato kategorie také sleduje problémy při odeslání signálu pozornosti na server za účelem zrušení provádění příkazu.

Tuto kategorii lze povolit pouze nastavením úrovně protokolování na FINEST.
TDS.Reader Tato kategorie sleduje určité operace čtení z kanálu TDS na úrovni FINEST. Na úrovni FINEST může být trasování podrobné. Na úrovni WARNING a SEVERE tato kategorie trasuje, když ovladač obdrží neplatný protokol TDS z SQL Serveru předtím, než ovladač ukončí připojení.

Tuto kategorii lze povolit pouze nastavením úrovně protokolování na FINER a FINEST.
TDS.Command Tato kategorie sleduje přechody stavu nízké úrovně a další informace spojené s prováděním příkazů TDS, jako jsou spouštění příkazů Transact-SQL, načítání kurzoru ResultSet, potvrzení atd.

Tuto kategorii lze povolit pouze nastavením logovací úrovně na FINEST.
TDS. TOKEN Tato kategorie zaznamenává pouze tokeny v paketech TDS a je méně podrobná než kategorie TDS.DATA. Lze ho povolit pouze nastavením úrovně protokolování na FINEST.

Na úrovni FINEST tato kategorie sleduje tokeny TDS při jejich zpracování v odpovědi. Na úrovni SEVERE tato kategorie zaznamenává, když je zachycen neplatný token TDS.
SQLServerDatabaseMetaData Zaznamenává zprávy ve třídě SQLServerDatabaseMetaData . Aplikace můžou nastavit úroveň protokolování jako FINE.
SQLServerResultSetMetaData Zaznamenává zprávy ve třídě SQLServerResultSetMetaData . Aplikace můžou nastavit úroveň protokolování jako FINE.
SQLServerParameterMetaData Zaznamenává zprávy ve třídě SQLServerParameterMetaData . Aplikace můžou nastavit úroveň protokolování jako FINE.
SQLServerBlob Zaznamenává zprávy ve třídě SQLServerBlob . Aplikace můžou nastavit úroveň protokolování jako FINE.
SQLServerClob Zaznamenává zprávy ve třídě SQLServerClob . Aplikace můžou nastavit úroveň protokolování jako FINE.
SQLServerSQLXML Zaznamenává zprávy v interní třídě SQLServerSQLXML. Aplikace můžou nastavit úroveň protokolování jako FINE.
SQLServerDriver Zaznamenává zprávy ve třídě SQLServerDriver . Aplikace můžou nastavit úroveň protokolování jako FINE.
SQLServerNClob Zaznamenává zprávy ve třídě SQLServerNClob . Aplikace můžou nastavit úroveň protokolování jako FINE.

Povolení trasování prostřednictvím kódu programu

Trasování lze povolit programově vytvořením objektu Logger a indikací kategorie, která se má protokolovat. Následující kód například ukazuje, jak povolit protokolování pro příkazy SQL:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.FINER);

Pokud chcete vypnout protokolování ve svém kódu, použijte následující kód:

logger.setLevel(Level.OFF);

Pokud chcete protokolovat všechny dostupné kategorie, použijte následující kód:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc");
logger.setLevel(Level.FINE);

Pokud chcete zakázat protokolování konkrétní kategorie, použijte následující kód:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.OFF);

Povolení trasování pomocí souboru logging.properties

Trasování můžete povolit také pomocí logging.properties souboru, který najdete v lib adresáři instalace prostředí Java Runtime Environment (JRE) 8 nebo conf ve složce pro Javu 9 a vyšší. Tento soubor lze použít k nastavení výchozích hodnot pro protokolovací nástroje a obslužné rutiny, které se použijí při povolení trasování.

Následující konfigurace je příkladem nastavení, která můžete v souborech logging.properties provést:

# Specify the handler, the handlers will be installed during VM startup.
handlers= java.util.logging.FileHandler

# Default global logging level.
.level= OFF

# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 5000000
java.util.logging.FileHandler.count = 20
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level = FINEST

# Facility specific properties.
com.microsoft.sqlserver.jdbc.level=FINEST

Poznámka:

Vlastnosti v logging.properties souboru můžete nastavit pomocí objektu LogManager, který je součástí java.util.logging.

Viz také

Diagnostika problémů s ovladačem JDBC