Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
JDBC-illesztőprogram letöltése
Az SQL Serverhez készült Microsoft JDBC-illesztőprogram támogatja a nyomkövetés (vagy naplózás) használatát a JDBC-illesztővel kapcsolatos problémák és problémák megoldásához az alkalmazásban való használat során. A nyomkövetés használatának engedélyezéséhez a JDBC-illesztő a java.util.logging naplózási API-jait használja, amely osztályokat biztosít a Logger és a LogRecord objektumok létrehozásához.
Megjegyzés:
A JDBC-illesztőhöz tartozó natív összetevő (sqljdbc_xa.dll) esetében a nyomkövetést a Built-In Diagnostics (BID) keretrendszer engedélyezi. A BID-ről további információt az SQL Server adatelérési nyomkövetési szolgáltatásában talál.
Az alkalmazás fejlesztésekor hívásokat kezdeményezhet a Logger-objektumokhoz, amelyek létrehozzák a LogRecord objektumokat, amelyeket aztán a rendszer továbbít a kezelőobjektumoknak feldolgozás céljából. A naplózó és a kezelő objektum egyaránt naplózási szinteket és opcionálisan naplózási szűrőket használ annak szabályozásához, hogy mely LogRecord-objektumok legyenek feldolgozva. Ha a naplózási műveletek befejeződnek, a Kezelő objektumok opcionálisan Formatter-objektumokkal tehetik közzé a naplóadatokat.
Alapértelmezés szerint a java.util.logging keretrendszer egy fájlba írja a kimenetét. Ennek a kimeneti naplófájlnak írási engedélyekkel kell rendelkeznie ahhoz a környezethez, amelyben a JDBC-illesztőprogram fut.
Megjegyzés:
A különböző naplózási objektumok programkövetéshez való használatával kapcsolatos további információkért tekintse meg a Java Logging API-k dokumentációját a Sun Microsystems webhelyén.
A következő szakaszok ismertetik a naplózási szinteket és a naplózható kategóriákat, és információkat nyújtanak arról, hogyan engedélyezheti a nyomkövetést az alkalmazásban.
Naplózási szintek
Minden létrehozott naplóüzenethez tartozik naplózási szint. A naplózási szint határozza meg a naplóüzenet fontosságát, amelyet a java.util.logging Level osztálya határoz meg. Ha egy szinten engedélyezi a naplózást, az minden magasabb szinten lehetővé teszi a naplózást. Ez a szakasz a nyilvános naplózási kategóriák és a belső naplózási kategóriák naplózási szintjeit ismerteti. A naplózási kategóriákról a jelen cikk Naplózási kategóriák szakaszában talál további információt.
Az alábbi táblázat a nyilvános naplózási kategóriákhoz elérhető összes naplózási szintet ismerteti.
| Név | Description |
|---|---|
| ERŐS | Súlyos hibát jelez, és ez a legmagasabb szintű naplózás. A JDBC-illesztőben ez a szint a hibák és kivételek jelentésére szolgál. |
| FIGYELMEZTETÉS | Lehetséges problémát jelez. |
| INFORMÁCIÓ | Tájékoztató üzeneteket tartalmaz. |
| Konfiguráció | Konfigurációs üzeneteket biztosít. A JDBC-illesztő jelenleg nem biztosít konfigurációs üzeneteket. |
| BÍRSÁG | Alapvető nyomkövetési információkat biztosít, beleértve a nyilvános metódusok által kiadott kivételeket is. |
| JOBB MINŐSÉGŰ | Részletes nyomkövetési információkat tartalmaz, beleértve az összes nyilvános metódusbeléptetési és kilépési pontot a társított paraméteradat-típusokkal, valamint a nyilvános osztályok összes nyilvános tulajdonságával. Emellett a bemeneti paraméterek, a kimeneti paraméterek és a metódus visszatérési értékei, kivéve a CLOB, BLOB, NCLOB, Reader, <stream> visszatérési értéktípusokat. |
| LEGJOBB | Részletes nyomkövetési információkat biztosít. Ez a beállítás a naplózás legalacsonyabb szintje. |
| KI | Kikapcsolja a naplózást. |
| ALL | Engedélyezi az összes üzenet naplózását. |
Az alábbi táblázat a belső naplózási kategóriákhoz elérhető naplózási szintek mindegyikét ismerteti.
| Név | Description |
|---|---|
| ERŐS | Súlyos hibát jelez, és ez a legmagasabb naplózási szint. A JDBC-illesztőben ez a szint a hibák és kivételek jelentésére szolgál. |
| FIGYELMEZTETÉS | Lehetséges problémát jelez. |
| INFORMÁCIÓ | Tájékoztató üzeneteket tartalmaz. |
| BÍRSÁG | Nyomkövetési információkat biztosít, beleértve az alapvető objektumok létrehozását és megsemmisítését. Emellett a nyilvános metódusok által feldobott összes kivételt is. |
| JOBB MINŐSÉGŰ | Részletes nyomkövetési információkat tartalmaz, beleértve az összes nyilvános metódusbeléptetési és kilépési pontot a társított paraméteradat-típusokkal, valamint a nyilvános osztályok összes nyilvános tulajdonságával. Emellett a bemeneti paraméterek, a kimeneti paraméterek és a metódus visszatérési értékei a CLOB, BLOB, NCLOB, Reader, <stream> visszatérési értéktípusok kivételével. A JDBC-illesztőprogram 1.2-es verziójában a következő naplózási kategóriák léteztek, és a FINE naplózási szinttel rendelkezett: SQLServerConnection, SQLServerStatement, XA és SQLServerDataSource. A 2.0-s verziótól kezdve ezek a kategóriák a FINER szintre frissülnek. |
| LEGJOBB | Részletes nyomkövetési információkat biztosít. Ez a beállítás a naplózás legalacsonyabb szintje. A JDBC-illesztő 1.2-es verziójában a következő naplózási kategóriák léteztek, és a FINEST naplózási szintje volt: TDS. DATA és TDS. TOKEN. A 2.0-s verziótól kezdve megtartják a FINEST naplózási szintjét. |
| KI | Kikapcsolja a naplózást. |
| ALL | Engedélyezi az összes üzenet naplózását. |
Naplózási kategóriák
Naplózó objektum létrehozásakor ismertetnie kell az objektummal, hogy melyik megnevezett entitástól vagy kategóriától szeretne naplóadatokat lekérni. A JDBC-illesztőprogram a következő nyilvános naplózási kategóriákat támogatja, amelyek mindegyike a com.microsoft.sqlserver.jdbc illesztőprogram-csomagban van definiálva.
| Név | Description |
|---|---|
| Kapcsolat | Naplózza az üzeneteket az SQLServerConnection osztályban. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be. |
| Statement | Naplózza az üzeneteket az SQLServerStatement osztályban. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be. |
| Adatforrás | Naplózza az üzeneteket az SQLServerDataSource osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
| Eredményhalmaz | Naplózza az üzeneteket az SQLServerResultSet osztályban. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be. |
| Driver | Naplózza az üzeneteket az SQLServerDriver osztályban. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be. |
| Resiliency | Naplózza az SQLServerConnection osztályban az üzeneteket, amelyek csak az üresjárati kapcsolat rugalmasságának újracsatlakoztatására vonatkoznak. Az alkalmazások a naplózási szintet FINOM és FINOMABB értékként állíthatják be. |
| Átirányítás | Naplózza az SQLServerConnection osztályban csak a kapcsolatmegnyitási újrapróbálkozásokhoz kapcsolódó üzeneteket. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
A Microsoft JDBC Driver 2.0-s verziójától kezdve az illesztőprogram a com.microsoft.sqlserver.jdbc.internals csomagot is biztosítja, amely a következő belső naplózási kategóriák naplózási támogatását tartalmazza.
| Név | Description |
|---|---|
| AuthenticationJNI | Naplózza a Windows integrált hitelesítési problémáival kapcsolatos üzeneteket (ha az authenticationScheme kapcsolati tulajdonság implicit módon vagy explicit módon NativeAuthentication értékre van állítva). Az alkalmazások a naplózási szintet a FINEST és a FINE értékre állíthatják be. |
| SQLServerConnection | Naplózza az üzeneteket az SQLServerConnection osztályban. Az alkalmazások a naplózási szintet FINOM és FINOMABB értékként állíthatják be. |
| SQLServerDataSource | Naplózza az üzeneteket az SQLServerDataSource, az SQLServerConnectionPoolDataSource és az SQLServerPooledConnection osztályban. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be. |
| InputStream | A következő adattípusokról naplózza az üzeneteket: java.io.InputStream, java.io.Reader és az adattípusok, amelyek maximális azonosítóval rendelkeznek, például varchar, nvarchar és varbináris adattípusok. Az alkalmazások a naplózási szintet FINOMABB értékként állíthatják be. |
| SQLServerException | Naplózza az üzeneteket az SQLServerException osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
| SQLServerResultSet | Naplózza az üzeneteket az SQLServerResultSet osztályban. Az alkalmazások a naplózási szintet FINOM, FINER és FINEST értékre állíthatják be. |
| SQLServerStatement | Naplózza az üzeneteket az SQLServerStatement osztályban. Az alkalmazások a naplózási szintet FINOM, FINER és FINEST értékre állíthatják be. |
| XA | Naplózza az összes XA-tranzakció üzeneteit az SQLServerXADataSource osztályban. Az alkalmazások a naplózási szintet FINOM és FINOMABB értékként állíthatják be. |
| KerbAuthentication | Naplózza a 4- es típusú Kerberos-hitelesítéssel kapcsolatos üzeneteket (ha az authenticationScheme kapcsolati tulajdonság JavaKerberos értékre van állítva). Az alkalmazás beállíthatja a naplózási szintet FINE vagy FINER értékre. |
| TDS.ADATOK | Naplózza az illesztőprogram és az SQL Server közötti TDS protokollszintű beszélgetést tartalmazó üzeneteket. Az elküldött és fogadott TDS-csomagok részletes tartalmát az ASCII és a hexadecimális naplózza. A bejelentkezési hitelesítő adatok (felhasználónevek és jelszavak) nincsenek naplózva. A rendszer minden más adatot naplóz. Ez a kategória nagyon részletes és részletes üzeneteket hoz létre, és csak akkor engedélyezhető, ha a naplózási szintet a FINEST értékre állítja. |
| TDS.Channel | Ez a kategória nyomon követi a TCP kommunikációs csatorna műveleteit az SQL Serverrel. A naplózott üzenetek közé tartozik az aljzat megnyitása és bezárása, valamint az olvasási és írási műveletek. Emellett nyomon követi a Transport Layer Security (TLS) korábbi nevén Secure Sockets Layer (SSL) kapcsolat sql serverrel való létesítéséhez kapcsolódó üzeneteket is. Ez a kategória csak akkor engedélyezhető, ha a naplózási szintet FINOM, FINOMABB vagy LEGFINOMABB értékre állítja. |
| TDS. Író | Ez a kategória nyomkövetési adatokat ír a TDS-csatornára. Csak az írások hossza van nyomon követve, nem a tartalom. Ez a kategória azt is nyomon követi, hogy a rendszer figyelmeztetést küld-e a kiszolgálónak az utasítás végrehajtásának megszakítása érdekében. Ez a kategória csak akkor engedélyezhető, ha a naplózási szintet a FINEST értékre állítja. |
| TDS. Olvasó | Ez a kategória nyomon követ bizonyos olvasási műveleteket a TDS-csatornáról a FINEST szinten. A FINEST szinten a nyomkövetés részletes lehet. A WARNING és a SEVERE szinten ez a kategória akkor követi nyomon az illesztőprogramot, amikor érvénytelen TDS-protokollt kap az SQL Servertől, mielőtt az bezárja a kapcsolatot. Ez a kategória csak akkor engedélyezhető, ha a naplózási szintet a FINER és a FINEST értékre állítja. |
| TDS.Parancs | Ez a kategória az alacsony szintű állapotáttűnéseket és a TDS-parancsok végrehajtásával kapcsolatos egyéb információkat, például Transact-SQL utasításvégrehajtásokat, ResultSet kurzorlehívásokat, véglegesítéseket stb. nyomon követ. Ez a kategória csak akkor engedélyezhető, ha a naplózási szintet a FINEST értékre állítja. |
| TDS. TOKEN | Ez a kategória csak a TDS-csomagokban lévő tokeneket naplózza, és kevésbé részletes, mint a TDS.DATA kategória. Csak akkor engedélyezhető, ha a naplózási szintet a FINEST értékre állítja. A FINEST szinten ez a kategória nyomon követi a válaszban feldolgozott TDS tokeneket. A SÚLYOS szinten ez a kategória nyomon követi, ha érvénytelen TDS-jogkivonatot észlelnek. |
| SQLServerDatabaseMetaData | Naplózza az üzeneteket az SQLServerDatabaseMetaData osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
| SQLServerResultSetMetaData | Naplózza az üzeneteket az SQLServerResultSetMetaData osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
| SQLServerParameterMetaData | Naplózza az üzeneteket az SQLServerParameterMetaData osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
| SQLServerBlob | Naplózza az üzeneteket az SQLServerBlob osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
| SQLServerClob | Naplózza az üzeneteket az SQLServerClob osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
| SQLServerSQLXML | Naplózza az üzeneteket a belső SQLServerSQLXML osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
| SQLServerDriver | Naplózza az üzeneteket az SQLServerDriver osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
| SQLServerNClob | Naplózza az üzeneteket az SQLServerNClob osztályban. Az alkalmazások a naplózási szintet FINOM értékként állíthatják be. |
A nyomkövetés programozott engedélyezése
A nyomkövetés programozott módon engedélyezhető egy Logger-objektum létrehozásával és a naplózandó kategória megjelölésével. Az alábbi kód például bemutatja, hogyan engedélyezheti az SQL-utasítások naplózását:
Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.FINER);
A kódban való naplózás kikapcsolásához használja a következő kódot:
logger.setLevel(Level.OFF);
Az összes elérhető kategória naplózásához használja a következő kódot:
Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc");
logger.setLevel(Level.FINE);
Ha le szeretné tiltani egy adott kategória naplózását, használja a következő kódot:
Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.OFF);
Nyomkövetés engedélyezése a logging.properties fájllal
A nyomkövetést a logging.properties fájl használatával is engedélyezheti, amely a lib Java Runtime Environment (JRE) 8 telepítésének könyvtárában vagy a conf Java 9 és újabb verziók mappájában található. Ez a fájl a nyomkövetés engedélyezésekor használt naplózók és kezelők alapértelmezett értékeinek beállítására használható.
Az alábbi konfiguráció egy példa a fájlokban logging.properties megadható beállításokra:
# 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
Megjegyzés:
A fájl tulajdonságait a logging.properties java.util.logging részét képező LogManager objektummal állíthatja be.