Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
JDBC-stuurprogramma downloaden
Het Microsoft Java JDBC-stuurprogramma (Database Connectivity) voor SQL Server is een type 4 JDBC-stuurprogramma (pure Java, praat rechtstreeks met het SQL Server TDS-protocol, geen systeemeigen bibliotheken vereist) waarmee elke Java toepassing of toepassingsserver verbinding kan maken met SQL Server, Azure SQL Database, Azure SQL Managed Instance en SQL-database in Microsoft Fabric. Het implementeert de standaard JDBC-API's en werkt met belangrijke Java toepassingsservers, waaronder IBM WebSphere en SAP NetWeaver.
Uw beginpunt kiezen
- Als u een Java ontwikkelomgeving wilt instellen en uw eerste query wilt uitvoeren, begint u met stap 1: Ontwikkelomgeving configureren, stap 2: een SQL-database maken en stap 3: Proof of concept verbinding maken met SQL met behulp van Java.
- Als u verbinding wilt maken met Azure SQL met verificatie zonder wachtwoord, begint u met Verbinding maken met behulp van Microsoft Entra verificatie en het bouwen van de verbindings-URL.
- Als u het stuurprogramma wilt toevoegen aan een Maven-, Gradle- of andere build, gaat u naar Download Microsoft JDBC-stuurprogramma voor SQL Server.
- Als u een bestaande app tolerant wilt maken voor tijdelijke fouten, gaat u naar Verbindingstolerantie en configureerbare logica voor opnieuw proberen.
- Als u een verbindings- of queryprobleem wilt vaststellen, gaat u naar Diagnose van problemen met het JDBC-stuurprogramma en het oplossen van verbindingsproblemen.
Productiebasislijn voor Azure SQL
Gebruik dit fragment als uitgangspunt voor een productiegerichte Azure SQL-verbinding. De servernaam en databasenaam worden geladen vanuit de toepassingsconfiguratie, zoals Azure App Service app-instellingen, omgevingsvariabelen of een configuratiebestand, en stelt de rest van de verbindingseigenschappen programmatisch in. De configuratie combineert Transport Layer Security (TLS), een beheerde identiteit, herhaalde verbindingspogingen bij tijdelijke storingen, snel herstel van failovergroepen, een langere time-out voor aanmelding om een failover na een koude start op te vangen, en configureerbare logica voor nieuwe pogingen (CRL) voor SQL-instructies die te maken krijgen met Azure SQL-throttling of een failover midden in een query.
Voor een betere beveiliging en eenvoudiger uitschalen houdt u verbindingsgegevens buiten uw code. Sla in productie verbindingsgegevens op in het configuratiesysteem van uw toepassing en gebruik Azure Key Vault voor gevoelige waarden en centraal beheerde verbindingsinstellingen. Zie Verbindingsreeksen beveiligen voor meer informatie.
De Java fragmenten in dit artikel laten import- en klasse-wrappers weg voor beknoptheid.
// 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));
}
}
Dit fragment is afgestemd op Azure SQL Database failovergroepen en Azure SQL Managed Instance.
multiSubnetFailover=true alleen instellen wanneer u verbinding maakt met een listener van een failovergroep, een listener van een beschikbaarheidsgroep of het eindpunt van een failoverclusterexemplaar. Het gebruik van deze eigenschap voor eindpunten die geen hoge beschikbaarheidslisteners (HA) zijn, kunnen de prestaties schaden en wordt niet ondersteund. Zie ondersteuning voor JDBC-stuurprogramma's voor hoge beschikbaarheid, herstel na noodgevallen voor meer informatie.
In het codefragment wordt retryConn niet ingesteld, omdat het stuurprogramma de meest voorkomende tijdelijke Azure SQL-verbindingsfouten (waaronder 4060, 40197, 40501, 40613, 49918, 49919, 49920, 10928 en 10929) standaard al automatisch opnieuw probeert, afhankelijk van connectRetryCount en connectRetryInterval. Zie de lijst met ingebouwde tijdelijke verbindingsfouten voor de volledige lijst. Voeg retryConn alleen toe met +<errorNumber> wanneer u de lijst wilt uitbreiden met een fout die nog niet wordt afgedekt, of stel deze in op <errorNumber> (zonder voorafgaande +) om die te vervangen. Als u dezelfde waarde in een JDBC-URL plaatst, verpakt u deze als retryConn={+<errorNumber>} of retryConn={<errorNumber>}.
De retryExec eigenschap heeft twee delen, geschreven als rule1;rule2 wanneer u deze programmatisch instelt. Als u dezelfde waarde in een JDBC-URL plaatst, verpakt u elke regel in accolades als {rule1};{rule2}:
{1205,1222:3,5+5}probeert deadlockslachtoffers (1205) en time-outs bij vergrendelingsaanvragen (1222) drie keer opnieuw, met een lineaire wachttijd van 5, 10 en 15 seconden. Voor 1205 rolt SQL Server de transactie terug voordat het stuurprogramma de fout ziet, dus het opnieuw uitvoeren van één instructie is veilig. Als de instructie die in een deadlock terechtkwam deel uitmaakte van een transactie met meerdere instructies, zijn ook eerdere instructies teruggedraaid en voert CRL deze niet opnieuw uit, dus neem de hele transactie op in uw eigen retrylus. 1222 laat de transactie open en de herhalingspoging op instructieniveau voert alleen de instructie opnieuw uit binnen de oorspronkelijke transactie; als u de duur van de transactie ook wilt begrenzen, plaats dan de hele transactie in uw eigen herhalingslus.{40501,40613,40197,10928,10929,49918:4,5*2}probeert vier keer opnieuw bij Azure SQL-throttling, failover midden in een query en fouten door resourcelimieten, met een exponentiële wachttijd van 5, 10, 20 en 40 seconden. Deze fouten staan in de ingebouwde lijst met tijdelijke fouten voor de connect-lus, maarretryExecvangt ze op wanneer ze midden in een query via een al tot stand gebrachte verbinding optreden. CRL-backoffs worden begrensd doorqueryTimeout. Als u lager dan de volgende geplande wachttijd insteltqueryTimeout, geeft de chauffeur vroeg af en wordt het opnieuw geworpen. Kies eenqueryTimeoutdie minstens zo groot is als de som van uw CRL-wachttijden en de uitvoeringstijd van de instructie, of accepteer dat de langste back-offs niet optreden.
Voor failovergroepen van Azure SQL Database, Hyperscale-replica’s met naam en leesschaalvergroting, of Always On-listeners voor beschikbaarheidsgroepen, stelt u applicationIntent=ReadOnly in wanneer u wilt uitkomen op een leesbare secundaire replica. Voor soevereine clouds waarbij de Subject Alternative Name (SAN) van het certificaat niet de host bevat waarmee u verbinding maakt, stelt u ook hostNameInCertificate zo in dat deze overeenkomt (bijvoorbeeld *.database.usgovcloudapi.net voor Azure Government).
Zie voor meer informatie over elk onderdeel van deze configuratie:
- De verbindings-URL bouwen
- De verbindingseigenschappen instellen
- Verbinding maken door gebruik te maken van Microsoft Entra-verificatie
- Verbindingstolerantie
- Configureerbare logica voor opnieuw proberen
- Ondersteuning voor JDBC-stuurprogramma's voor hoge beschikbaarheid, herstel na noodgevallen
- Inzicht in time-outeigenschappen in het JDBC-stuurprogramma
Zie Tijdelijke verbindingsfouten oplossen voor de catalogus met Azure SQL tijdelijke fouten.
Belangrijkste kenmerken
-
Op standaarden gebaseerde JDBC: Type 4-stuurprogramma. De JRE 11+-build implementeert JDBC 4.2 plus de JDBC 4.3-methoden voor aanvraaggrenzen (
beginRequest,endRequest) en hulpfuncties voor het quoten inStatement. JDBC 4.3-sharding-API’s (setShardingKey, decreateConnectionBuilder-familie) werpenSQLFeatureNotSupportedException. De JRE 8-build implementeert JDBC 4.2. Zie voor de uitsplitsing per versie en de volledige lijst met ondersteunde en niet-ondersteunde 4.3-methoden Java- en JDBC-specificatieondersteuning. - Brede platformondersteuning: wordt uitgevoerd op elk platform met een ondersteunde Java Virtual Machine (JVM), waaronder Windows, Linux en macOS.
-
Standaard versleuteld: tls-versleutelde verbindingen met
encrypt=trueals de standaardwaarde voor huidige stuurprogramma's. - Microsoft Entra ID-authenticatie: wachtwoordloze verbindingen met beheerde identiteit, service-principal, interactieve, geïntegreerde, standaardketen van aanmeldingsgegevens en toegangstokenstromen.
- Kerberos: geïntegreerde verificatie voor on-premises Active Directory.
- NTLM: Windows vraag-/antwoordverificatie voor niet-domein- of verouderde scenario's.
- Always Encrypted: Versleuteling aan de clientzijde voor gevoelige kolommen, met optionele beveiligde enclaves voor in-place bewerkingen.
-
Bulksgewijs kopiëren: invoegingen met hoge doorvoer met de
SQLServerBulkCopyAPI en prestaties voor batchinvoeging voorexecuteBatch. -
Verbindingsweerbaarheid: ingebouwde pogingen om de verbinding opnieuw tot stand te brengen bij tijdelijke fouten, plus optionele configureerbare logica voor opnieuw proberen voor instructies (
retryExec) en een aanpasbare lijst met verbindingsfouten (retryConn). - Uitgebreide ondersteuning voor SQL Server gegevenstypen: datetimeoffset, sql_variant, JSON, spatial, vector, tabelwaardeparameters en door de gebruiker gedefinieerde typen.
Get started
| Article | Description |
|---|---|
| Systeemvereisten | Ondersteunde versies van Java, besturingssysteem en SQL Server. |
| Ondersteuningsmatrix | Gedetailleerde compatibiliteitsmatrix voor releases van JDBC-stuurprogramma's. |
| Microsoft JDBC-stuurprogramma voor SQL Server downloaden | Download koppelingen, Maven-coördinaten en releaseartefacten. |
| Aan de slag met het JDBC-stuurprogramma | Installeer het stuurprogramma, configureer uw omgeving en voer uw eerste query uit. |
| Overzicht van het JDBC-stuurprogramma | Architectuur, ondersteunde functies en naleving van JDBC-specificatie. |
Configureren en verbinding maken
| Article | Description |
|---|---|
| Verbinding maken met SQL Server met het JDBC-stuurprogramma | Open een verbinding met een SQL Server exemplaar vanuit Java. |
| Verbinding maken met een Azure SQL-database | Een Java-toepassing verbinden met Azure SQL Database. |
| De verbindings-URL bouwen | Volledige verwijzing voor jdbc:sqlserver:// URL-syntaxis en eigenschappen. |
| De verbindingseigenschappen instellen | Alle verbindingseigenschappen, standaardinstellingen en hoe u deze instelt. |
| De eigenschappen van de gegevensbron instellen | Configureren SQLServerDataSource voor gebruik met JNDI- en app-servers. |
| Werken met een verbinding | Open, hergebruik en sluit verbindingen correct. |
| Groepsgewijze verbindingen gebruiken | JNDI-gegevensbronnen en integratie met externe pools. |
| Verbindingstolerantie | Ingebouwde verbindingsherhaling en detectie van verbroken verbindingen. |
| Configureerbare logica voor opnieuw proberen | Voer mislukte instructies opnieuw uit met retryExec en pas de lijst voor nieuwe verbindingspogingen aan met retryConn. |
| Inzicht in time-outeigenschappen in het JDBC-stuurprogramma |
loginTimeout, queryTimeout, sockettimeouts en hoe die op elkaar inwerken. |
| Het JDBC-stuurprogramma implementeren | Verpakt en implementeer het stuurprogramma met uw toepassing. |
Authenticate
| Article | Description |
|---|---|
| Microsoft Entra-authenticatie | Beheerde identiteit, service-principal, interactieve, geïntegreerde en toegangstokenauthenticatie. |
| Geïntegreerde Kerberos-verificatie | Maak verbinding met Kerberos en Active Directory. |
| NTLM-verificatie | Gebruik NTLM-referenties om te verifiëren. |
| Verificatie van clientcertificaten voor loopback-scenario's | Clients authenticeren met certificaten op loopback-verbindingen. |
Secure
| Article | Description |
|---|---|
| JDBC-stuurprogrammatoepassingen beveiligen | Beveiligingsrichtlijnen voor Java toepassingen die gebruikmaken van het stuurprogramma. |
| Toepassingsbeveiliging | Bedreigingsmodel en diepgaande aanbevelingen voor beveiliging. |
| Verbindingsreeksen beveiligen | Referenties en verbindingsreeksen buiten de bron houden. |
| De client configureren voor versleuteling | Vertrouwenswortels, certificaatpinning en TLS-instellingen. |
| Verbinding maken met versleuteling | Forceer encrypt=true en valideer het servercertificaat. |
| Informatie over versleutelingsondersteuning | Hoe het stuurprogramma onderhandelt over TLS met SQL Server. |
| Gebruikersinvoer valideren | Parameters maken voor SQL en injectie voorkomen. |
| FIPS-modus | Voer het stuurprogramma uit in FIPS-compatibele omgevingen. |
| Altijd versleuteld | Configureer versleuteling aan de clientzijde voor gevoelige kolommen. |
| Always Encrypted met beveiligde enclaves | Schakel uitgebreide bewerkingen in voor versleutelde kolommen. |
| Always Encrypted-API-verwijzing | API-oppervlak voor providers voor kolomversleuteling en sleutelarchieven. |
Werken met gegevens
| Article | Description |
|---|---|
| Werken met opdrachten en resultatensets | Basisbeginselen van Statement, PreparedStatementen resultaatsets. |
| Statements gebruiken met het JDBC-stuurprogramma | Voer geparameteriseerde en niet-geparameteriseerde instructies uit. |
| Complexe uitspraken verwerken | Opgeslagen procedures, meerdere resultaten en aantal updates. |
| Werken met resultaatsets | Queryresultaten herhalen, bijwerken en doorlopen. |
| Meerdere resultatensets gebruiken | Query's afhandelen die meer dan één resultatenset retourneren. |
| Informatie over cursortypen | Alleen-voorwaartse, scrollbare en bijwerkbare cursoren. |
| Parameters met tabelwaarden gebruiken |
TABLE Parameters doorgeven aan stored procedures. |
| Bulkkopie gebruiken met het JDBC-stuurprogramma | Snelle invoegingen met SQLServerBulkCopy. |
| API bulksgewijs kopiëren voor batchinvoeging | Versnel executeBatch voor INSERT-werklasten. |
| Batchbewerkingen uitvoeren | Bulksgewijs invoegen, bijwerken en verwijderen. |
Gegevenstypen
| Article | Description |
|---|---|
| Werken met gegevenstypen | Wijs Java-typen toe aan de SQL Server-typen. |
| Informatie over de gegevenstypen van het JDBC-stuurprogramma | Systeem- en JDBC-toewijzingen van stuurprogrammatypen. |
| Conversies van gegevenstypen | Impliciete en expliciete conversies tussen Java en SQL Server. |
| Verschillen in gegevenstype | Randgevallen bij het toewijzen van typen over de grens. |
| JSON-gegevenstype | JSON-kolommen opslaan en er query's op uitvoeren. |
| Ruimtelijke gegevenstypen | Gebruik geometrie en geografie uit Java. |
| Vectorgegevenstype | Werk met het SQL Server vectortype. |
| sql_variant | sql_variant-kolommen lezen en schrijven. |
| Door de gebruiker gedefinieerde typen | Gebruik door de gebruiker gedefinieerde CLR-typen uit Java. |
| Ondersteuning voor nationale tekenset | Unicode-verwerking en nvarchar-kolommen. |
| Internationale functies | Overwegingen omtrent land- en taalinstellingen, sorteervolgorde en globalisatie. |
Transacties en gelijktijdigheid
| Article | Description |
|---|---|
| Transacties uitvoeren |
commit, rollbacken semantiek voor automatisch doorvoeren. |
| Inzicht krijgen in transacties | Levenscyclus en best practices voor transacties. |
| Isolatieniveaus | Momentopname, vastgelegde, serialiseerbare en andere momentopnamen. |
| Gelijktijdigheidsbeheer | Optimistische en pessimistische concurrencystrategieën. |
| Rijvergrendeling | Hoe SQL Server rijvergrendelingen accepteert en loslaat. |
| Savepoints gebruiken | Gedeeltelijke terugdraaiactie binnen een transactie. |
| Transactiegrootte beheren | Stem het transactiebereik af om langdurige vergrendelingen te voorkomen. |
| XA-transacties | Doorvoer in twee fasen met SQLServerXADataSource. |
Prestaties en betrouwbaarheid
| Article | Description |
|---|---|
| Prestaties en betrouwbaarheid verbeteren | Afstemming op index-, query- en stuurprogrammaniveau. |
| Metadata van voorbereide instructies cachen | Voorbereide instructieplannen opnieuw gebruiken. |
| Parameterprestaties van voorbereide statement | Parametertypering en hergebruik van uitvoeringsplannen. |
| Adaptieve buffering | Grote kolommen streamen zonder ze volledig in het geheugen te laden. |
| Objecten sluiten wanneer ze niet in gebruik zijn | Gratis Statement, ResultSet en Connection-bronnen, direct beschikbaar. |
| Hoge beschikbaarheid en herstel na noodgevallen | Listeners voor beschikbaarheidsgroepen en failover met meerdere subnetten. |
| Databasespiegeling | Gebruik het stuurprogramma met partners voor databasespiegeling. |
Diagnosticeren en problemen oplossen
| Article | Description |
|---|---|
| Problemen met het JDBC-stuurprogramma vaststellen | Tracering, logboekregistratie en veelvoorkomende foutmodi. |
| Connectiviteitsproblemen oplossen | Verbindingsfouten, mislukte TLS-handshakes en benoemde instanties. |
| Stuurprogrammabewerking traceren | Schakel JDK-logboekregistratie in voor het stuurprogramma. |
| Prestatieregistratie en callback | Prestatiestatistieken per statement vastleggen. |
| Logboek voor uitgebreide gebeurtenissen | Clientfouten correleren met uitgebreide gebeurtenissen aan de serverzijde. |
| Afhandeling van fouten |
SQLException, foutcodes en hints voor opnieuw proberen. |
Gerelateerde taken
| Article | Description |
|---|---|
| Opmerkingen bij de release | Versiegeschiedenis en wat er nieuw is in elke release. |
| Functieafhankelijkheden | Optionele afhankelijkheden voor Entra ID, Kerberos, Always Encrypted en andere. |
| JDBC 4.3-conformiteit | JDBC 4.3 API-conformiteit. |
| Compatibiliteit met JDBC 4.2 | JDBC 4.2 API-conformiteit. |
| Compatibiliteit met JDBC 4.1 | JDBC 4.1 API-conformiteit. |
| Compliance en juridisch | Naleving van specificaties en licentieverlening. |
| Naslaginformatie over de API voor JDBC-stuurprogramma's | Klassen, interfaces, methoden en velden die door het stuurprogramma worden weergegeven. |
| Voorbeeld van JDBC-stuurprogrammatoepassingen | End-to-end-codevoorbeelden. |
| FAQ | Veelgestelde vragen. |
Verwante inhoud
- Microsoft JDBC-stuurprogramma voor SQL Server op GitHub
- Microsoft JDBC-stuurprogramma voor SQL Server op Maven Central
- Releaseopmerkingen voor het Microsoft JDBC-stuurprogramma voor SQL Server
- Het vinden van aanvullende informatie over JDBC-stuurprogramma's
- Verbindingsmodules voor Microsoft SQL Database-