Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
JDBC-illesztőprogram letöltése
A Microsoft Java Database Connectivity (JDBC) Driver for SQL Server egy Type 4 JDBC illesztőprogram (tiszta Java, közvetlenül a SQL Server TDS protokollt beszéli, nincs szükség natív könyvtárakra), amely lehetővé teszi, hogy bármely Java alkalmazás vagy alkalmazásszerver csatlakozzon a Microsoft SQL-hez Database Engine az Azure SQL Database-ben, SQL database a Fabric-ben, Azure SQL Managed Instance-ban, valamint minden támogatott SQL Server verzióban és kiadásban (beleértve az Express Edition-eket is). Implementálja a szabványos JDBC API-kat, és együttműködik a főbb Java alkalmazáskiszolgálókkal, beleértve az IBM WebSphere-et és az SAP NetWeaver-t.
Válassza ki a kiindulási pontot
- A Java fejlesztési környezet beállításához és az első lekérdezés futtatásához kezdje az 1. lépéssel: Fejlesztői környezet konfigurálása, 2. lépés: SQL-adatbázis létrehozása és 3. lépés: Az SQL-hez való csatlakozás koncepciójának igazolása Java.
- Ha jelszó nélküli hitelesítéssel szeretne csatlakozni Azure SQL, kezdje a Csatlakozással Microsoft Entra hitelesítéssel és a kapcsolat URL-címének létrehozásával.
- Az illesztőprogram Maven-, Gradle- vagy más buildhez való hozzáadásához nyissa meg a A Microsoft SQL Serverhez készült JDBC-illesztőprogram letöltése oldalt.
- Ha egy meglévő alkalmazást rugalmassá szeretne tenni az átmeneti hibáknak, lépjen a Kapcsolat rugalmassága és a Konfigurálható újrapróbálkozási logika elemre.
- Kapcsolati vagy lekérdezési probléma diagnosztizálásához lépjen a JDBC-illesztővel kapcsolatos problémák diagnosztizálásához és akapcsolat hibaelhárításához.
Azure SQL üzemi alapkonfigurációja
Használja ezt a kódrészletet egy éles Azure SQL kapcsolat kiindulópontjaként. Betölti a kiszolgáló nevét és az adatbázis nevét az alkalmazáskonfigurációból, például Azure App Service alkalmazásbeállításokat, környezeti változókat vagy konfigurációs fájlokat, és programozott módon állítja be a kapcsolat többi tulajdonságát. A konfiguráció egyesíti a Transport Layer Security (TLS), a felügyelt identitást, az átmeneti hibákra irányuló kapcsolat újrapróbálkozását, a feladatátvételi csoport gyors helyreállítását, a hosszabb bejelentkezési időtúllépést a hidegindítású feladatátvétel lefedéséhez, valamint konfigurálható újrapróbálkozási logikát (CRL) a Azure SQL szabályozást vagy a lekérdezések közötti feladatátvételt érintő utasításokhoz.
A nagyobb biztonság és a könnyebb felskálázás érdekében tartsa a kódon kívül a kapcsolati adatokat. Éles környezetben tárolja a csatlakozási adatokat az alkalmazás konfigurációs rendszerében, és használja az Azure Key Vaultot a bizalmas értékek tárolására, valamint a központilag felügyelt csatlakozási beállítások kezelésére. További információ: Kapcsolati sztringek biztonságossá tétele.
A cikkben szereplő Java kódrészletek kihagyják az importot és az osztályburkolókat a rövidség kedvéért.
// Load endpoint details from application configuration. In Azure App Service,
// these can come from app settings or Key Vault-backed settings.
String serverName = System.getenv("SQL_SERVER_NAME");
String databaseName = System.getenv("SQL_DATABASE_NAME");
String port = System.getenv().getOrDefault("SQL_PORT", "1433");
if (serverName == null || databaseName == null) {
throw new IllegalStateException(
"Set SQL_SERVER_NAME and SQL_DATABASE_NAME in your application configuration.");
}
String url = "jdbc:sqlserver://" + serverName + ":" + port;
Properties props = new Properties();
props.setProperty("databaseName", databaseName);
props.setProperty("encrypt", "true");
props.setProperty("trustServerCertificate", "false");
props.setProperty("authentication", "ActiveDirectoryManagedIdentity");
props.setProperty("loginTimeout", "120"); // 90 is the minimum floor for this retry profile; 120 leaves practical failover margin
props.setProperty("connectRetryCount", "5"); // retry transient connection failures up to 5 times (default 1)
props.setProperty("connectRetryInterval", "15"); // 15 seconds between connection retries (default 10)
props.setProperty("multiSubnetFailover", "true"); // recommended for any Azure SQL HA listener
// props.setProperty("applicationIntent", "ReadOnly"); // uncomment to route to a readable secondary
// Retry deadlocks and lock timeouts, plus Azure SQL throttling and mid-query failover.
props.setProperty("retryExec", "1205,1222:3,5+5;40501,40613,40197,10928,10929,49918:4,5*2");
try (Connection conn = DriverManager.getConnection(url, props);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 1")) {
while (rs.next()) {
System.out.println(rs.getInt(1));
}
}
Ez a kódrészlet az Azure SQL Database feladatátvételi csoportjaihoz és az Azure SQL Managed Instance-hez lett hangolva.
multiSubnetFailover=true csak akkor állítsa be, ha feladatátvételi csoport figyelőjéhez, rendelkezésre állási csoport figyelőjéhez vagy feladatátvevő fürtpéldány végpontjához csatlakozik. Ha ezt a tulajdonságot olyan végpontokon használja, amelyek nem magas rendelkezésre állású (HA) figyelők, az ronthatja a teljesítményt, és nem támogatott. További információ: JDBC-illesztőprogramok támogatása magas rendelkezésre álláshoz és vészhelyreállításhoz.
A kódrészlet nem állítja be a retryConn értéket, mert az illesztőprogram alapértelmezés szerint már újrapróbálja a leggyakoribb Azure SQL átmeneti kapcsolódási hibákat (beleértve a 4060, 40197, 40501, 40613, 49918, 49919, 49920, 10928 és 10929 hibákat), amelyet a connectRetryCount és connectRetryInterval szabályoz. A teljes listát a beépített átmeneti kapcsolat hibalistájában találja. A retryConn elemet csak a +<errorNumber> használatával adja hozzá, ha a listát olyan hibával kell bővítenie, amelyre még nem terjed ki, vagy állítsa <errorNumber> értékre (kezdő + nélkül) annak lecseréléséhez. Ha ugyanazt az értéket egy JDBC URL-ben adja meg, foglalja retryConn={+<errorNumber>} vagy retryConn={<errorNumber>} közé.
A retryExec tulajdonság két részből áll, és programozott beállításkor rule1;rule2 alakban kell megadni. Ha ugyanazt az értéket egy JDBC URL-címben helyezi el, minden szabályt kapcsos zárójelekbe csomagoljon a következő módon {rule1};{rule2}:
{1205,1222:3,5+5}háromszor újrapróbálja a holtpont áldozatául eső tranzakciókat (1205) és a zároláskérési időtúllépéseket (1222) 5, 10, illetve 15 másodperces lineárisan növekvő várakozási idővel. Az 1205-ös verzió esetében SQL Server visszaállítja a tranzakciót, mielőtt az illesztő észleli a hibát, így egyetlen utasítás újrafuttatása biztonságos. Ha a holtpontba került utasítás egy több utasításból álló tranzakció része volt, a korábbi utasítások is visszagörgetődtek, és a CRL nem hajtja végre újra őket, ezért érdemes a teljes tranzakciót saját újrapróbálkozási ciklusba foglalni. 1222 nyitva hagyja a tranzakciót, és az utasításszintű újrapróbálkozás csak az eredeti tranzakción belül futtatja újra az utasítást; ha a tranzakció időtartamát is meg kell kötnie, akkor a teljes tranzakciót a saját újrapróbálkozása során kell becsomagolnia.{40501,40613,40197,10928,10929,49918:4,5*2}négyszer újrapróbálkozza Azure SQL szabályozással, a lekérdezések közötti feladatátvétellel és az erőforrás-korláttal kapcsolatos hibákat, 5, 10, 20 és 40 másodperces exponenciális visszalépéssel. Ezek a hibák szerepelnek a kapcsolódási hurok beépített átmeneti listájában, deretryExecez az, ami elkapja őket, amikor egy létrehozott kapcsolaton lekérdezés közben aktiválódnak. A CRL-ek visszalépési idejét a(z)queryTimeoutkorlátozza. Ha a(z)queryTimeoutértékét a következő tervezett várakozásnál alacsonyabbra állítja, az illesztőprogram idő előtt feladja, és újra kivételt dob. Válasszon olyanqueryTimeoutértéket, amely legalább akkora, mint a CRL-várakozások összesített ideje és az utasítás futási ideje együtt, vagy fogadja el, hogy a leghosszabb visszalépések nem fognak bekövetkezni.
Azure SQL Database feladatátvételi csoportok, Hiperskálázású elnevezett replikák és olvasási skálázás, illetve Always On rendelkezésre állási csoportok figyelői esetén állítsa be a(z) applicationIntent=ReadOnly értéket, ha egy olvasható másodlagos példányhoz szeretne kapcsolódni. Azokban a szuverén felhőkben, ahol a tanúsítvány Subject Alternative Name (SAN) mezője nem tartalmazza azt a gazdagépet, amelyhez csatlakozik, állítsa be úgy a(z) hostNameInCertificate értékét, hogy az is egyezzen (például az Azure Government esetében: *.database.usgovcloudapi.net).
A konfiguráció egyes részeivel kapcsolatos további információkért lásd:
- A kapcsolat URL-címének létrehozása
- A kapcsolat tulajdonságainak beállítása
- Csatlakozás Microsoft Entra-hitelesítéssel
- Kapcsolat rugalmassága
- Konfigurálható újrapróbálkozás logikája
- JDBC-illesztőprogramok támogatása magas rendelkezésre álláshoz, vészhelyreállításhoz
- A JDBC-illesztőprogram időtúllépési tulajdonságainak ismertetése
Az átmeneti Azure SQL hibakatalógusát az átmeneti csatlakozási hibák hibaelhárítása című témakörben találja.
Legfontosabb funkciók
-
Szabványalapú JDBC: 4- es típusú illesztő. A JRE 11+ verzió megvalósítja a JDBC 4.2-t, valamint a JDBC 4.3 kéréshatár-metódusait (
beginRequest,endRequest), továbbá aStatementidézéssegítőket. A JDBC 4.3 sardolási API-k (setShardingKey, acreateConnectionBuildercsalád)SQLFeatureNotSupportedExceptiondobnak. A JRE 8 verziója a JDBC 4.2-t valósítja meg. A verziónkénti lebontást és a támogatott és nem támogatott 4.3 metódusok teljes listáját a Java és a JDBC specifikációs támogatásában találja. - Széles platformtámogatás: Bármely platformon futtatható támogatott Java virtuális géppel (JVM), beleértve a Windows, a Linux és a macOS rendszert is.
-
Alapértelmezés szerint titkosítva: TLS-titkosított kapcsolatok
encrypt=truealapértelmezettként az aktuális illesztőprogramokhoz. - Microsoft Entra ID hitelesítés: Jelszó nélküli kapcsolatok felügyelt identitással, szolgáltatásnévvel, interaktív, integrált, alapértelmezett hitelesítőadat-lánccal és hozzáférési jogkivonat-folyamatokkal.
- Kerberos: Integrált hitelesítés helyszíni Active Directoryhoz.
- NTLM: A Windows kihívás-válasz hitelesítése nem tartományi vagy örökölt környezetekhez.
- Always Encrypted: Ügyféloldali titkosítás bizalmas oszlopokhoz, opcionális biztonságos enklávékkal a helyszíni műveletekhez.
-
Tömeges másolás: Nagy áteresztőképességű beszúrások a
SQLServerBulkCopyAPI-val és batch insert teljesítményexecuteBatchesetén. -
Kapcsolat ellenálló képessége: Beépített kapcsolat-újrapróbálkozások átmeneti hibák esetén, valamint igény szerint engedélyezhető, konfigurálható újrapróbálkozási logika az utasítások esetén (
retryExec), továbbá egy testre szabható kapcsolódási hibalista (retryConn). - Gazdag SQL Server adattípus támogatása: datetimeoffset, sql_variant, JSON, térbeli, vektor, táblaértékkel rendelkező paraméterek és felhasználó által definiált típusok.
Első lépések
| Cikk | Description |
|---|---|
| Rendszer követelmények | Támogatott Java, operációs rendszer és SQL Server verziók. |
| Támogatási mátrix | Részletes kompatibilitási mátrix JDBC-illesztőprogramok kiadásához. |
| Az SQL Serverhez készült Microsoft JDBC-illesztő letöltése | Letöltési hivatkozások, Maven-koordináták és kiadási összetevők. |
| A JDBC-illesztőprogram használatának első lépései | Telepítse az illesztőprogramot, konfigurálja a környezetet, és futtassa az első lekérdezést. |
| A JDBC-illesztőprogram áttekintése | Architektúra, támogatott funkciók és JDBC-specifikációk megfelelősége. |
Konfigurálás és csatlakoztatás
| Cikk | Description |
|---|---|
| Csatlakozás az SQL Serverhez a JDBC-illesztővel | Kapcsolat létesítése egy SQL Server-példánnyal Java használatával. |
| Csatlakozás Azure SQL-adatbázishoz | Csatlakoztasson egy Java-alkalmazást az Azure SQL Database-hez. |
| A kapcsolat URL-címének létrehozása | Teljes hivatkozás az URL-szintaxisra és a jdbc:sqlserver:// tulajdonságokra. |
| A kapcsolat tulajdonságainak beállítása | Minden kapcsolattulajdonság, alapértelmezett érték és beállításuk. |
| Az adatforrás tulajdonságainak beállítása | Konfigurálja a(z) SQLServerDataSource elemet JNDI-vel és alkalmazásszerverekkel való használatra. |
| Kapcsolattal való munka | A kapcsolatok helyes megnyitása, újrafelhasználása és bezárása. |
| Kapcsolatkészletezés használata | JNDI-adatforrások és integráció külső készletekkel. |
| Kapcsolat rugalmassága | A beépített kapcsolat újrapróbálkozásai és a megszakadt kapcsolat észlelése. |
| Konfigurálható újrapróbálkozás logikája | Próbálja újra a sikertelen utasításokat a(z) retryExec használatával, és szabja testre a kapcsolat újrapróbálási listáját a(z) retryConn használatával. |
| A JDBC-illesztőprogram időtúllépési tulajdonságainak ismertetése |
loginTimeout, queryTimeout, socket-időtúllépések és azok egymásra hatása. |
| A JDBC-illesztőprogram üzembe helyezése | Csomagolja és helyezze üzembe az illesztőprogramot az alkalmazással együtt. |
Hitelesít
| Cikk | Description |
|---|---|
| Microsoft Entra-hitelesítés | Felügyelt identitás, szolgáltatásnév, interaktív, integrált és hozzáférési jogkivonatos hitelesítés. |
| Kerberos integrált hitelesítés | Kapcsolódjon a Kerberoshoz és az Active Directoryhoz. |
| NTLM-hitelesítés | Hitelesítéshez használja az NTLM hitelesítő adatait. |
| Ügyféltanúsítvány-hitelesítés visszacsatolási forgatókönyvekhez | Ügyfelek hitelesítése tanúsítványokkal a visszacsatolási kapcsolatokon. |
Secure
| Cikk | Description |
|---|---|
| JDBC-illesztőalkalmazások védelme | Biztonsági útmutató az illesztőprogramot használó Java alkalmazásokhoz. |
| Alkalmazásbiztonság | Fenyegetésmodell és részletes védelmi javaslatok. |
| Kapcsolati karakterláncok biztosítása | A hitelesítő adatokat és a kapcsolati karakterláncokat ne tárolja a forráskódban. |
| Az ügyfél konfigurálása titkosításhoz | Megbízhatósági gyökerek, tanúsítvány-rögzítés és TLS-beállítások. |
| Csatlakozás titkosítással | Kényszerítse encrypt=true, és ellenőrizze a kiszolgáló tanúsítványát. |
| A titkosítás támogatásának ismertetése | Hogyan egyeztet TLS-kapcsolatot az illesztőprogram az SQL Serverrel. |
| Felhasználói bemenet érvényesítése | Paraméterezheti az SQL-t, és elkerülheti az injektálást. |
| FIPS mód | Használja az illesztőprogramot FIPS-nek megfelelő környezetekben. |
| Mindig titkosítva | Ügyféloldali titkosítás konfigurálása bizalmas oszlopokhoz. |
| Mindig titkosított, biztonságos enklávékkal | Bővített műveletek engedélyezése a titkosított oszlopokon. |
| Always Encrypted API-referencia | API-felület oszloptitkosítási szolgáltatókhoz és kulcstárolókhoz. |
Adatkezelés
| Cikk | Description |
|---|---|
| Utasítások és eredményhalmazok használata |
Statement, PreparedStatement és az eredményhalmazok alapjai. |
| Utasítások használata a JDBC-illesztővel | Paraméteres és nem paraméteres utasítások futtatása. |
| Összetett utasítások kezelése | Tárolt eljárások, több eredmény és frissítési szám. |
| Eredményhalmazok használata | A lekérdezés eredményeinek iterálása, frissítése és görgetése. |
| Több eredményhalmaz használata | Egynél több eredményhalmazt visszaadó lekérdezések kezelése. |
| A kurzortípusok ismertetése | Csak előre, görgethető és frissíthető kurzorok. |
| Táblaértékű paraméterek használata | Paraméterek átadása TABLE tárolt eljárásoknak. |
| Tömeges másolás használata a JDBC-illesztővel | Nagy áteresztőképességű beszúrás SQLServerBulkCopy használatával. |
| Tömeges másolási API kötegelt beszúráshoz | Gyorsítsa fel a executeBatch a INSERT számítási feladatokhoz. |
| Kötegelt műveletek végrehajtása | Batch-beszúrások, -frissítések és -törlések. |
Adattípusok
| Cikk | Description |
|---|---|
| Adattípusok használata | Java típusok leképezése SQL Server típusokra. |
| A JDBC-illesztőprogram adattípusainak ismertetése | Illesztőprogram-típusrendszer és JDBC-leképezések. |
| Adattípus-átalakítások | Implicit és explicit konverziók Java és SQL Server között. |
| Adattípus-különbségek | Szélső esetek a típusok határon átnyúló megfeleltetésekor. |
| JSON-adattípus | JSON-oszlopok tárolása és lekérdezése. |
| Térbeli adattípusok | Használja a Java nyelvből származó geometry és geography elemeket. |
| Vektor adattípus | A SQL Server vektortípussal végzett munka. |
| sql_variant | sql_variant oszlopok olvasása és írása. |
| Felhasználó által definiált típusok | CLR felhasználó által definiált típusok használata Java-ból |
| Nemzeti karakterkészlet támogatása | Unicode-kezelés és nvarchar oszlopok. |
| Nemzetközi funkciók | Területi, rendezési és globalizációs szempontok. |
Tranzakciók és egyidejűség
| Cikk | Description |
|---|---|
| Tranzakciók végrehajtása |
commit, rollback és az automatikus véglegesítés szemantikája. |
| A tranzakciók ismertetése | Tranzakciós életciklus és ajánlott eljárások. |
| Elkülönítési szintek | Pillanatkép, lekötött olvasás, szerializálható és mások. |
| Párhuzamosság-kezelés | Optimista és pesszimista párhuzamossági stratégiák. |
| Sorzárolás | Hogyan zárolja az SQL Server a sorokat, és hogyan oldja fel a zárolásokat. |
| Mentési pontok használata | Részleges visszaállítás egy tranzakción belül. |
| Tranzakcióméret kezelése | A tranzakció hatókörének finomhangolása a hosszan futó zárolások elkerülése érdekében. |
| XA-tranzakciók | Kétfázisú commit a(z) SQLServerXADataSource használatával. |
Teljesítmény és megbízhatóság
| Cikk | Description |
|---|---|
| A teljesítmény és a megbízhatóság javítása | Index, lekérdezés és illesztőprogram-szintű hangolás. |
| Előkészített utasítás metaadatainak gyorsítótárazása | Az előkészített utasításcsomagok újrafelhasználása. |
| Előkészített utasításparaméter teljesítménye | A paraméter beírása és a végrehajtási terv újbóli felhasználása. |
| Adaptív pufferelés | Streamelje a nagy oszlopokat anélkül, hogy teljes mértékben betölti őket a memóriába. |
| Objektumok bezárása használaton túl | Ingyenes Statement, ResultSetés Connection erőforrások azonnal. |
| Magas rendelkezésre állás és vészhelyreállítás | A rendelkezésre állási csoport figyelői és a többalhálózatos feladatátvétel. |
| Adatbázis-tükrözés | Használja az illesztőt adatbázis-tükrözési partnerekkel. |
Diagnosztizálás és hibaelhárítás
| Cikk | Description |
|---|---|
| A JDBC-illesztővel kapcsolatos problémák diagnosztizálása | Nyomkövetési, naplózási és gyakori hibamódok. |
| Kapcsolódási hibák elhárítása | Csatlakozási hibák, TLS-kapcsolatfelépítési hibák és elnevezett példányok. |
| Az illesztőprogram működésének nyomon követése | Engedélyezze a JDK-naplózást az illesztőprogram számára. |
| Teljesítménynaplózó és visszahívás | Kimutatásonkénti teljesítménymetrikák rögzítése. |
| Bővített eseménynapló | Korrelálja az ügyfélhibákat a kiszolgálóoldali kiterjesztett eseményekkel. |
| A hibák kezelése |
SQLException, hibakódok és újrapróbálkozások tippjei. |
Kapcsolódó tevékenységek
| Cikk | Description |
|---|---|
| Kiadási megjegyzések | Verzióelőzmények és az egyes kiadások újdonságai. |
| Funkciófüggőségek | Választható függőségek Entra ID, Kerberos, Always Encrypted és mások számára. |
| JDBC 4.3-megfelelőség | JDBC 4.3 API-megfelelőség. |
| JDBC 4.2-megfelelőség | JDBC 4.2 API-megfelelőség. |
| JDBC 4.1-megfelelőség | JDBC 4.1 API-megfelelőség. |
| Megfelelőség és jogi | Specifikációk megfelelősége és licencelése. |
| JDBC-illesztőprogram API-referenciája | Az illesztőprogram által közzétett osztályok, felületek, metódusok és mezők. |
| JDBC-illesztőalkalmazások mintája | Teljes körű kódminták. |
| FAQ | Gyakori kérdések. |