Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
JDBC sürücüsünü indirin
SQL Server için Microsoft Java Veritabanı Bağlantısı (JDBC) Sürücüsü, herhangi bir Java uygulamasının veya uygulama sunucusunun Microsoft SQL'e bağlanmasını sağlayan bir Tip 4 JDBC sürücüsüdür (saf Java, SQL Server TDS protokolünü doğrudan konuşur, yerel kütüphanelere gerek yoktur) Database Engine Azure SQL Veritabanı'de, SQL veritabanı Fabric, Azure SQL Yönetilen Örneği'de ve SQL Server'in tüm desteklenen sürümlerinde (Express Editions dahil) mevcuttur. Standart JDBC API'lerini uygular ve IBM WebSphere ve SAP NetWeaver gibi büyük Java uygulama sunucularıyla çalışır.
Başlangıç noktanızı seçin
- Java bir geliştirme ortamı ayarlamak ve ilk sorgunuzu çalıştırmak için 1. Adım: Geliştirme ortamını yapılandırma, 2. Adım: SQL veritabanı oluşturma ve 3. Adım: Java kullanarak SQL'e bağlanma kavramı kanıtı ile başlayın.
- Parolasız kimlik doğrulamasıyla Azure SQL bağlanmak için Microsoft Entra kimlik doğrulamasını kullanarak bağlanma ve Bağlantı URL'sini oluşturma ile başlayın.
- Sürücüyü bir Maven, Gradle veya başka bir derlemeye eklemek için SQL Server için Microsoft JDBC Sürücüsü İndir'e gidin.
- Mevcut bir uygulamayı geçici hatalara dayanıklı hale getirmek için Bağlantı dayanıklılığı ve Yapılandırılabilir yeniden deneme mantığı'na gidin.
- Bağlantı veya sorgu sorununu tanılamak için JDBC sürücüsüyle ilgili sorunları tanılama ve Bağlantı sorunlarını giderme bölümüne gidin.
Azure SQL için üretim temeli
Bu kod parçacığını üretim odaklı Azure SQL bağlantısı için başlangıç noktası olarak kullanın. Azure App Service uygulama ayarları, ortam değişkenleri veya yapılandırma dosyası gibi uygulama yapılandırmasından sunucu adını ve veritabanı adını yükler ve bağlantı özelliklerinin geri kalanını program aracılığıyla ayarlar. Yapılandırma, Taşıma Katmanı Güvenliği’ni (TLS), yönetilen kimliği, geçici hatalarda bağlantının yeniden denenmesini, yük devretme grubunun hızlı kurtarılmasını, soğuk başlatmalı bir yük devretmeyi kapsayacak kadar uzun bir oturum açma zaman aşımını ve Azure SQL kısıtlaması veya sorgu sırasında gerçekleşen yük devretme ile karşılaşan ifadeler için yapılandırılabilir yeniden deneme mantığını (CRL) bir araya getirir.
Daha yüksek güvenlik ve daha kolay ölçek genişletme için bağlantı bilgilerini kodunuzun dışında tutun. Üretimde bağlantı bilgilerini uygulamanızın yapılandırma sisteminde depolayın ve hassas değerler ve merkezi olarak yönetilen bağlantı ayarları için Azure Key Vault kullanın. Daha fazla bilgi için bkz . Bağlantı dizelerinin güvenliğini sağlama.
Bu makaledeki Java kod parçacıklarında, kısalık amacıyla import ifadelerine ve sınıf tanımlarına yer verilmemiştir.
// 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));
}
}
Bu kod parçacığı, Azure SQL Veritabanı yük devretme grupları ve Azure SQL Yönetilen Örneği için ayarlanmıştır.
Yalnızca bir yük devretme grubu dinleyicisine, kullanılabilirlik grubu dinleyicisine veya yük devretme kümesi örneği uç noktasına bağlandığınızda multiSubnetFailover=true ayarlayın. Bu özelliğin yüksek kullanılabilirlik (HA) dinleyicileri olmayan uç noktalarda kullanılması performansı etkileyebilir ve desteklenmez. Daha fazla bilgi için bkz. Yüksek Kullanılabilirlik, olağanüstü durum kurtarma için JDBC sürücü desteği.
Kod parçacığı, retryConn ve connectRetryCount tarafından kontrol edilen varsayılan davranış kapsamında, sürücü en yaygın Azure SQL geçici bağlantı hatalarını (4060, 40197, 40501, 40613, 49918, 49919, 49920, 10928 ve 10929 dahil) zaten yeniden denediği için connectRetryInterval değerini ayarlamaz. Tam liste için bkz . Yerleşik geçici bağlantı hata listesi.
retryConn ile +<errorNumber> yalnızca listeyi zaten kapsanmayan bir hatayla genişletmeniz gerektiğinde ekleyin veya değiştirmek için bunu <errorNumber> olarak ayarlayın (+ ile başlamadan). Aynı değeri bir JDBC URL'sine yerleştirirseniz, bunu retryConn={+<errorNumber>} veya retryConn={<errorNumber>} ile sarın.
retryExec özelliği iki bölümden oluşur; programatik olarak ayarladığınızda rule1;rule2 şeklinde yazılır. Bir JDBC URL’sinde aynı değeri belirtirseniz, her kuralı {rule1};{rule2}gösterildiği gibi süslü parantez içine alın:
{1205,1222:3,5+5}, kilitlenme kurbanlarını (1205) ve kilit isteği zaman aşımlarını (1222) 5, 10 ve 15 saniyelik doğrusal aralıklarla üç kez yeniden dener. 1205 için SQL Server, sürücü hatayı görmeden önce işlemi geri alır, bu nedenle tek bir deyimi yeniden çalıştırmak güvenlidir. Kilitlenmeye giren ifade, birden çok ifadeden oluşan bir işlemin parçasıysa önceki ifadeler de geri alınır ve CRL bunları yeniden yürütmez; bu yüzden işlemin tamamını kendi yeniden deneme döngünüzün içine alın. 1222 işlemi açık bırakır ve deyim düzeyindeki yeniden deneme yalnızca orijinal işlem içindeki deyimi yeniden çalıştırır; işlem süresini de sınırlamanız gerekiyorsa, tüm işlemi kendi yeniden deneme döngünüzün içine alın.{40501,40613,40197,10928,10929,49918:4,5*2}Azure SQL’deki kısıtlama, sorgu sırasında yük devretme ve kaynak sınırı hatalarını 5, 10, 20 ve 40 saniyelik üssel geri çekilme ile dört kez yeniden dener. Bu hatalar, connect döngüsü için yerleşik geçici hata listesinde bulunur; ancak kurulmuş bir bağlantı üzerinde sorgunun ortasında ortaya çıktıklarında bunları yakalayan şeyretryExecöğesidir. CRL geri çekilme süreleriqueryTimeoutile sınırlıdır. Bir sonraki planlı beklemeden daha düşük bir süre ayarlarsanızqueryTimeout, sürücü erken pes eder ve yeniden çatır. CRL bekleme sürelerinizin toplamı ile ifade çalıştırma süresinin toplamı kadar büyük veya daha büyük birqueryTimeoutseçin ya da en uzun geri çekilme sürelerinin devreye girmeyeceğini kabul edin.
Azure SQL Veritabanı yük devretme grupları, Hyperscale adlandırılmış çoğaltmaları ve okuma ölçeğini genişletme ya da Always On kullanılabilirlik grubu dinleyicileri için, okunabilir bir ikincil sunucuya bağlanmak istediğinizde applicationIntent=ReadOnly değerini ayarlayın. Sertifikanın Özne Alternatif Adı (SAN), bağlandığınız ana bilgisayarı içermeyen egemen bulutlarda, eşleşmesi için hostNameInCertificate değerini de ayarlayın (örneğin, Azure Kamu için *.database.usgovcloudapi.net).
Bu yapılandırmanın her bölümü hakkında daha fazla bilgi için bkz:
- Bağlantı URL'sini oluşturma
- Bağlantı özelliklerini ayarlama
- Microsoft Entra kimlik doğrulamayı kullanarak bağlanma
- Bağlantı dayanıklılığı
- Yapılandırılabilir yeniden deneme mantığı
- Yüksek Kullanılabilirlik, olağanüstü durum kurtarma için JDBC sürücü desteği
- JDBC sürücüsündeki zaman aşımı özelliklerini anlama
Azure SQL geçici hataların kataloğu için bkz. Geçici bağlantı hatalarını giderme.
Temel özellikler
-
Standartlara dayalı JDBC: Tür 4 sürücüsü. JRE 11+ derlemesi, JDBC 4.2 ve JDBC 4.3 istek sınırı yöntemlerini (
beginRequest,endRequest) uygular veStatementyardımcılardan alıntı yapar. JDBC 4.3 parçalama API'leri (setShardingKey,createConnectionBuilderailesi)SQLFeatureNotSupportedExceptionfırlatır. JRE 8 derlemesi JDBC 4.2'yi uygular. Sürüm başına döküm ve desteklenen ve desteklenmeyen 4.3 yöntemlerinin tam listesi için bkz. Java ve JDBC belirtimi desteği. - Geniş platform desteği: Windows, Linux ve macOS dahil olmak üzere desteklenen Java Sanal Makinesine (JVM) sahip tüm platformlarda çalışır.
-
Varsayılan olarak şifrelenir: Geçerli sürücüler için varsayılan olarak ile
encrypt=trueTLS ile şifrelenmiş bağlantılar. - Microsoft Entra ID kimlik doğrulaması: Yönetilen kimlik, hizmet sorumlusu, etkileşimli, tümleşik, varsayılan kimlik bilgisi zinciri ve erişim belirteci akışları ile parolasız bağlantılar.
- Kerberos: şirket içi Active Directory için tümleşik kimlik doğrulaması.
- NTLM: Etki alanına bağlı olmayan veya eski senaryolar için Windows sınama/yanıt kimlik doğrulaması.
- Always Encrypted: Hassas sütunlar için istemci tarafı şifreleme; yerinde işlemler için isteğe bağlı güvenli enklavlarla.
-
Toplu kopyalama:
SQLServerBulkCopyAPI ile yüksek verimli eklemeler veexecuteBatchiçin toplu ekleme performansı. -
Bağlantı dayanıklılığı: Geçici hatalar için yerleşik bağlantı yeniden deneme mekanizmasına ek olarak, ifadeler (
retryExec) için isteğe bağlı olarak yapılandırılabilen yeniden deneme mantığı ve özelleştirilebilir bir bağlantı hata listesi (retryConn). - Zengin SQL Server veri türü desteği: datetimeoffset, sql_variant, JSON, uzamsal, vektör, tablo değerli parametreler ve kullanıcı tanımlı türler.
Başlayın
| Article | Description |
|---|---|
| Sistem gereksinimleri | Desteklenen Java, işletim sistemi ve SQL Server sürümleri. |
| Destek matrisi | JDBC sürücü sürümleri için ayrıntılı uyumluluk matrisi. |
| SQL Server için Microsoft JDBC Sürücüsünü İndirme | Bağlantıları, Maven koordinatlarını ve yayın yapıtlarını indirin. |
| JDBC sürücüsünü kullanmaya başlama | Sürücüyü yükleyin, ortamınızı yapılandırın ve ilk sorgunuzu çalıştırın. |
| JDBC sürücüsüne genel bakış | Mimari, desteklenen özellikler ve JDBC belirtimi uyumluluğu. |
Yapılandırma ve bağlanma
| Article | Description |
|---|---|
| JDBC sürücüsüyle SQL Server'a bağlanma | Java'dan bir SQL Server örneğine bağlantı kurun. |
| Azure SQL veritabanına bağlanma | bir Java uygulamasını Azure SQL Veritabanı bağlayın. |
| Bağlantı URL'sini oluşturma |
jdbc:sqlserver:// URL söz dizimi ve özellikleri için tam referans. |
| Bağlantı özelliklerini ayarlama | Tüm bağlantı özellikleri, varsayılanlar ve bunların nasıl ayarlanacağı. |
| Veri kaynağı özelliklerini ayarlama |
SQLServerDataSource öğesini JNDI ve uygulama sunucularıyla kullanmak üzere yapılandırın. |
| Bağlantı ile çalışmak | Bağlantıları doğru bir şekilde açın, yeniden kullanabilir ve kapatabilirsiniz. |
| Bağlantı havuzunu kullanma | JNDI veri kaynakları ve harici havuzlarla entegrasyon. |
| Bağlantı dayanıklılığı | Yerleşik bağlantı yeniden denemeleri ve bozuk bağlantı algılama. |
| Yapılandırılabilir yeniden deneme mantığı | Başarısız ifadeleri retryExec ile yeniden deneyin ve bağlantı yeniden deneme listesini retryConn ile özelleştirin. |
| JDBC sürücüsündeki zaman aşımı özelliklerini anlama |
loginTimeout, queryTimeout, soket zaman aşımları ve bunların nasıl etkileştiği. |
| JDBC sürücüsünü dağıtma | Sürücüyü uygulamanızla birlikte paketleyin ve dağıtın. |
Authenticate
| Article | Description |
|---|---|
| Microsoft Entra kimlik doğrulama | Yönetilen kimlik, hizmet sorumlusu, etkileşimli, tümleşik ve erişim belirteci kimlik doğrulaması. |
| Kerberos tümleşik kimlik doğrulaması | Kerberos ve Active Directory ile bağlanın. |
| NTLM kimlik doğrulaması | Kimlik doğrulaması için NTLM kimlik bilgilerini kullanın. |
| Geri döngü senaryoları için istemci sertifikası kimlik doğrulaması | Geri döngü bağlantılarında sertifikalarla istemcilerin kimliğini doğrulama. |
Secure
| Article | Description |
|---|---|
| JDBC sürücü uygulamalarının güvenliğini sağlama | Sürücüyü kullanan Java uygulamaları için güvenlik kılavuzu. |
| Uygulama güvenliği | Tehdit modeli ve derinlemesine savunma önerileri. |
| Bağlantı dizelerinin güvenliğini sağlama | Kimlik bilgilerini ve bağlantı dizelerini kaynaktan uzak tutun. |
| İstemciyi şifreleme için yapılandırma | Güven kökleri, sertifika sabitleme ve TLS ayarları. |
| Şifreleme ile bağlanma |
encrypt=true zorunlu kılın ve sunucu sertifikasını doğrulayın. |
| Şifreleme desteğini anlama | Sürücünün SQL Server ile TLS anlaşması yapma şekli. |
| Kullanıcı girişini doğrulama | SQL'i parametreleştirin ve eklemeden kaçının. |
| FIPS modu | Sürücüyü FIPS uyumlu ortamlarda çalıştırın. |
| Her Zaman Şifreli | Hassas sütunlar için istemci tarafı şifrelemesini yapılandırın. |
| Her Zaman Şifreli ile güvenli enklavlar | Şifrelenmiş sütunlarda zengin işlemleri etkinleştirin. |
| Always Encrypted API başvurusu | Sütun şifreleme sağlayıcıları ve anahtar depoları için API yüzeyi. |
Verilerle çalışma
| Article | Description |
|---|---|
| İfadeler ve sonuç kümeleriyle çalışma |
Statement, PreparedStatement ve sonuç kümelerinin temelleri. |
| JDBC sürücüsüyle komutları kullanma | Parametreli ve parametresiz deyimleri çalıştırın. |
| Karmaşık deyimleri işleme | Saklı yordamlar, birden çok sonuç ve güncelleştirme sayıları. |
| Sonuç kümeleriyle çalışma | Sorgu sonuçlarını yineleyin, güncelleştirin ve kaydırın. |
| Birden çok sonuç kümesi kullanma | Birden fazla sonuç kümesi döndüren sorguları işleyebilir. |
| İmleç türlerini anlama | Yalnızca ileri yönlü, kaydırılabilir ve güncellenebilir imleçler. |
| Tablo değerli parametreleri kullanma |
TABLE Parametreleri saklı yordamlarına geçirin. |
| JDBC sürücüsüyle toplu kopyalama kullanma |
SQLServerBulkCopy ile yüksek işlem hacimli eklemeler. |
| Toplu ekleme için toplu kopyalama API'si | İş yükleri için executeBatch hızlandırınINSERT. |
| Toplu işlem gerçekleştirme | Toplu eklemeler, güncelleştirmeler ve silmeler. |
Veri türleri
| Article | Description |
|---|---|
| Veri türleriyle çalışma | Java türlerini SQL Server türlere eşleyin. |
| JDBC sürücüsü veri türlerini anlama | Sürücü türü sistemi ve JDBC eşlemeleri. |
| Veri türü dönüştürmeleri | Java ile SQL Server arasında örtük ve açık dönüştürmeler. |
| Veri türü farklılıkları | Türleri sınırın ötesine eşlerken karşılaşılan uç durumlar. |
| JSON veri türü | JSON sütunlarını depolayın ve sorgulayın. |
| Uzamsal veri türleri | Java'dan geometri ve coğrafya kullanın. |
| Vektör veri türü | SQL Server vektör türüyle çalışın. |
| sql_variant | sql_variant sütunlarını okuma ve yazma. |
| Kullanıcı tanımlı türler | Java'dan CLR kullanıcı tanımlı türlerini kullanın. |
| Ulusal karakter kümesi desteği | Unicode işleme ve nvarchar sütunları. |
| Uluslararası özellikler | Yerel ayar, harmanlama ve genelleştirmeyle ilgili dikkat edilmesi gerekenler. |
İşlemler ve eşzamanlılık
| Article | Description |
|---|---|
| İşlem gerçekleştirme |
commit, rollback ve otomatik kaydetme anlam bilgisi. |
| İşlemleri anlama | İşlem yaşam döngüsü ve en iyi yöntemler. |
| Yalıtım düzeyleri | Anlık görüntü, okunmuş veriyi onaylayan, serileştirilebilir ve diğerleri. |
| Eşzamanlılık denetimi | İyimser ve kötümser eşzamanlılık stratejileri. |
| Satır kilitleme | SQL Server satır kilitlerini nasıl alır ve serbest bırakır? |
| Saklama noktalarını kullanma | Bir işlem içinde kısmi geri alma. |
| İşlem boyutunu yönetme | Uzun süre çalışan kilitlerden kaçınmak için işlem kapsamını ayarlayın. |
| XA işlemleri |
SQLServerXADataSource ile iki aşamalı taahhüt. |
Performans ve güvenilirlik
| Article | Description |
|---|---|
| Performansı ve güvenilirliği artırma | Dizin, sorgu ve sürücü düzeyinde ayarlama. |
| Hazırlanmış deyim meta verileri önbelleğe alma | Hazırlanmış ifade planlarını yeniden kullanın. |
| Hazırlanmış ifade parametresi performansı | Parametre yazma ve yürütme planını yeniden kullanma. |
| Uyarlanabilir arabellekleme | Büyük sütunları tamamen belleğe yüklemeden akışla aktarabilirsiniz. |
| Kullanılmadığında nesneleri kapatma | Ücretsiz Statement, ResultSetve Connection kaynakları hemen kullanın. |
| Yüksek kullanılabilirlik ve olağanüstü durum kurtarma | Kullanılabilirlik grubu dinleyicileri ve çoklu alt ağ yük devretmesi. |
| Veritabanı yansıtma | Sürücüyü veritabanı yansıtma iş ortaklarıyla birlikte kullanın. |
Tanılama ve sorun giderme
| Article | Description |
|---|---|
| JDBC sürücüsüyle ilgili sorunları tanılama | İzleme, günlüğe kaydetme ve yaygın hata modları. |
| Bağlantı sorunlarını giderme | Bağlantı hataları, TLS el sıkışma hataları ve adlandırılmış örnekler. |
| Sürücü işlemini izleme | Sürücü için JDK günlüğünü etkinleştirin. |
| Performans günlüğü ve geri çağırım | İfade başına performans metriklerini toplayın. |
| Genişletilmiş olay günlüğü | İstemci hatalarını sunucu tarafındaki genişletilmiş olaylarla ilişkilendirin. |
| Hataları işleme |
SQLException, hata kodları ve yeniden deneme ipuçları. |
İlgili görevler
| Article | Description |
|---|---|
| Sürüm notları | Sürüm geçmişi ve her sürümdeki yenilikler. |
| Özellik bağımlılıkları | Entra ID, Kerberos, Always Encrypted ve diğerleri için isteğe bağlı bağımlılıklar. |
| JDBC 4.3 uyumluluğu | JDBC 4.3 API uyumluluğu. |
| JDBC 4.2 uyumluluğu | JDBC 4.2 API uyumluluğu. |
| JDBC 4.1 uyumluluğu | JDBC 4.1 API uyumluluğu. |
| Uyumluluk ve yasal | Belirtim uyumluluğu ve lisanslama. |
| JDBC sürücü API'si başvurusu | Sürücü tarafından kullanıma sunulan sınıflar, arabirimler, yöntemler ve alanlar. |
| Örnek JDBC sürücü uygulamaları | Uçtan uca kod örnekleri. |
| SSS | Sık sorulan sorular. |
İlgili içerik
- GitHub üzerinde SQL Server için Microsoft JDBC Sürücüsü
- Maven Central'da SQL Server için Microsoft JDBC Sürücüsü
- SQL Server için Microsoft JDBC Sürücüsü sürüm notları
- Ek JDBC sürücü bilgilerini bulma
- Microsoft SQL Veritabanı için
Bağlantı modülleri