Microsoft.Data.SqlClient için bağlantı seçenekleri

Bu makale, Microsoft'un kabul ettiği tüm bağlantı dizesi anahtar kelimelerini listeliyor. Data.SqlClient kabul ediyor. Her anahtar kelimenin ayrıca bir eşleşme SqlConnectionStringBuilder özelliği vardır. Giriş, yaygın desenler ve ayrıştırma kuralları için bkz. Bağlantı dizeleri.

Anahtar kelimeler ve takma adlar büyük harf hassasiyetli değildir. Bir yapıcı özelliği üzerinden bir değer ayarladığınızda, yapıcı anahtar kelime sütununa kanonik anahtar kelime yazar.

SqlConnectionStringBuilder ile seçenekleri ayar

Sunucu, veritabanı ve kimlik doğrulama ayarlarını tutan bir temel bağlantı dizesi'ten başlayın. Sonra builder properties üzerinden iş yüküne özgü seçenekleri belirleyin. .NET Framework sekmeleri C# 7.3 kullanır. Örnekleri çalıştıran bir proje oluşturmak için, Projeyi Oluştur bölümüne bakınız.

using Microsoft.Data.SqlClient;

string connectionString =
    Environment.GetEnvironmentVariable("SQL_CONNECTION_STRING")
    ?? throw new InvalidOperationException(
        "Set the SQL_CONNECTION_STRING environment variable.");

var builder = new SqlConnectionStringBuilder(connectionString)
{
    ApplicationName = "Orders.Worker",
    ConnectTimeout = 30,
    CommandTimeout = 60,
    MaxPoolSize = 50,
};

await using var connection = new SqlConnection(builder.ConnectionString);
await connection.OpenAsync();

await using var command = new SqlCommand("SELECT APP_NAME();", connection);
Console.WriteLine($"APP_NAME(): {await command.ExecuteScalarAsync()}");
Console.WriteLine($"Connection timeout: {connection.ConnectionTimeout}");
Console.WriteLine($"Command timeout: {command.CommandTimeout}");

Çıktı şudur:

APP_NAME(): Orders.Worker
Connection timeout: 30
Command timeout: 60

Yeni bir cihaz, SqlCommand varsayılan zaman aşımını Command Timeout bağlantısının anahtar kelimesinden alır.

Varsayılan değerleri kontrol et

Her seçenek için varsayılan SqlConnectionStringBuilder olarak yeni bir cihaz rapor ediyor. Bu program, çoğu uygulamanın incelediği varsayılan değerleri yazdırır:

using Microsoft.Data.SqlClient;

var defaults = new SqlConnectionStringBuilder();

Console.WriteLine($"Connect Timeout: {defaults.ConnectTimeout}");
Console.WriteLine($"Command Timeout: {defaults.CommandTimeout}");
Console.WriteLine($"Connect Retry Count: {defaults.ConnectRetryCount}");
Console.WriteLine($"Connect Retry Interval: {defaults.ConnectRetryInterval}");
Console.WriteLine($"Encrypt: {defaults.Encrypt}");
Console.WriteLine($"Trust Server Certificate: {defaults.TrustServerCertificate}");
Console.WriteLine($"Pooling: {defaults.Pooling}");
Console.WriteLine($"Min Pool Size: {defaults.MinPoolSize}");
Console.WriteLine($"Max Pool Size: {defaults.MaxPoolSize}");
Console.WriteLine($"Connection Idle Timeout: {defaults.IdleTimeout}");
Console.WriteLine($"Load Balance Timeout: {defaults.LoadBalanceTimeout}");
Console.WriteLine($"Packet Size: {defaults.PacketSize}");
Console.WriteLine($"Multi Subnet Failover: {defaults.MultiSubnetFailover}");
Console.WriteLine($"IP Address Preference: {defaults.IPAddressPreference}");
Console.WriteLine($"Pool Blocking Period: {defaults.PoolBlockingPeriod}");
Console.WriteLine($"Application Intent: {defaults.ApplicationIntent}");
Console.WriteLine($"Application Name: {defaults.ApplicationName}");
Console.WriteLine($"Type System Version: {defaults.TypeSystemVersion}");
Console.WriteLine($"Transaction Binding: {defaults.TransactionBinding}");

.NET'te çıktı şudur:

Connect Timeout: 15
Command Timeout: 30
Connect Retry Count: 1
Connect Retry Interval: 10
Encrypt: True
Trust Server Certificate: False
Pooling: True
Min Pool Size: 0
Max Pool Size: 100
Connection Idle Timeout: 300
Load Balance Timeout: 0
Packet Size: 8000
Multi Subnet Failover: False
IP Address Preference: IPv4First
Pool Blocking Period: Auto
Application Intent: ReadWrite
Application Name: Core Microsoft SqlClient Data Provider
Type System Version: Latest
Transaction Binding: Implicit Unbind

Encrypt: True seçenek bu Mandatory karar. .NET Framework'te varsayılan uygulama adı Framework Microsoft SqlClient Veri Sağlayıcısı.

Sunucu ve veritabanı seçenekleri

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Data Source Server, Address, Addr, Network Address DataSource Empty Bağlanacak sunucu. Bir ana adı, host,port, host\instance, (localdb)\instance, ve a tcp: veya np: protokol öneki kabul eder. Kabul edilen formlar için bkz. Sunucu ve veritabanını belirt.
Initial Catalog Database InitialCatalog Empty Giriş sonrası kullanılacak veritabanı. Boş olduğunda, sunucu giriş veritabanının varsayılan veritabanını kullanır.
AttachDbFilename Extended Properties, Initial File Name AttachDBFilename Empty SQL Server Express ve LocalDB için birincil veritabanı dosyasının tam yolu bağlanır.
User Instance Hiç kimse UserInstance false Bağlantıyı SQL Server Express kullanıcı örneğine yönlendirir. Daha fazla bilgi için SQL Server Express kullanıcı örneklerine bakınız.
Failover Partner FailoverPartner FailoverPartner Empty Birincil sunucu kullanılmadığında denemek için veritabanı yansıtma ortağı. Veritabanı yansıtma kullanımdan kaldırıldı. Yeni dağıtımlar için kullanılabilirlik gruplarını kullanın.
Current Language Language CurrentLanguage Empty Oturum için SQL Server dil adı, örneğin us_english. Tarih formatlarını ve sistem mesaj dilini kontrol eder.

Uygulama kimlik seçenekleri

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Application Name App ApplicationName Core Microsoft SqlClient Data Provider Sunucunun oturum görünümlerinde APP_NAME() ve aracılığıyla rapor ettiği isim. Her dağıtılan iş yükü için tek bir kararlı isim kullanın. Farklı değerler, farklı bağlantı havuzları oluşturur.
Workstation ID WorkstationID, WSID WorkstationID Yerel bilgisayar adı Sunucunun bildirdiği HOST_NAME()istemci bilgisayar adı.
Application Intent ApplicationIntent ApplicationIntent ReadWrite ReadOnly Hedef desteklediğinde okuma niyetli yönlendirme talep eder. Açıklamaları sadece okunabilir hale getirmiyor. Daha fazla bilgi için Yüksek erişilebilirlik ve felaket kurtarma bölümlerine bakınız.

Hangi çerçeve veya aracın bağlantı açtığını bildirmek için özelliği RegisteredApplication kullanın. Bir bağlantı dizesi anahtar kelimesi yok. Daha fazla bilgi için Uygulama kimliğini bildir sayfasına bakınız.

Kimlik doğrulama seçenekleri

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Authentication Hiç kimse Authentication Belirtilmemiş Kimlik doğrulama yöntemi. Kabul edilen değerler için aşağıdaki tabloya bakınız.
Integrated Security Trusted_Connection IntegratedSecurity false true, yes, veya sspi mevcut sürecin kimliğini kullanır.
User ID UID, User UserID Empty SQL giriş adı veya Microsoft Entra ID kullanıcı veya istemci tanımlayıcısı, duruma Authenticationbağlı olarak .
Password PWD Password Empty Şifreyi kabul eden yöntemler için şifre veya istemci sırrı.
Persist Security Info PersistSecurityInfo PersistSecurityInfo false Eğer false, sürücü bağlantı açıldıktan sonra şifreyi SqlConnection.ConnectionString kaldırır. Bırak falsegitsin.
Server SPN ServerSPN ServerSPN Sunucu adından türetilmiştir Birincil sunucuya entegre kimlik doğrulama için kullanılan Hizmet Başalı Adını (SPN) geçersiz kılar.
Failover Partner SPN FailoverPartnerSPN FailoverPartnerSPN Ortak adından türemiştir Entegre kimlik doğrulama için kullanılan SPN'yi devre ortağına geçer.

Authentication bu değerleri kabul eder. Yapıcı bunları, örneğin uzaysız ActiveDirectoryDefaultyazar ve ayrıştırıcı her iki formu da kabul eder.

Value Identity
Sql Password ve ile bir SQL girişi User IDPasswordvar.
Active Directory Default Çevre değişkenleri, yönetilen kimlik ve geliştirici aracı girişi gibi bir kimlik kaynağı zinciri.
Active Directory Managed Identity Yönetilen bir kimlik. Kullanıcı tarafından atanan bir kimliğin istemci kimliğine ayarlayın User ID . Active Directory MSI diğer addır.
Active Directory Workload Identity Bir Kubernetes iş yükü kimliği.
Active Directory Service Principal İstemci ID'ye ve Password istemci sırrına ayarlanmış bir uygulamaUser ID.
Active Directory Interactive Tarayıcı isteği üzerinden giriş yapan bir kullanıcı.
Active Directory Device Code Flow Başka bir cihazda kodla giriş yapan bir kullanıcı.
Active Directory Integrated Giriş yapan Windows kullanıcısı, federasyon veya kesintisiz tek girişli yapılandırma ile.
Active Directory Password Kullanıcı adı ve parola. Bu yöntem kullanımdan kaldırıldı. Başka bir yöntem kullanın.

Microsoft Entra ID yöntemleri pakete Microsoft.Data.SqlClient.Extensions.Azure ihtiyaç duyar. Kurulum ve örnekler için bkz. Microsoft Entra ID doğrulama ve SQL Server doğrulaması.

Şifreleme seçenekleri

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Encrypt Hiç kimse Encrypt Mandatory Strict TDS 8.0 kullanır ve her zaman sunucu sertifikasını doğrular. Mandatory, true, veya yes bağlantıyı şifreler. Optional, false, veya no tüm bağlantıyı sadece sunucu gerektirdiğinde şifreler. Sunucu şifrelemeyi destekleyip zorunlu kılmadığında, sadece giriş paketi şifrelenir.
Trust Server Certificate TrustServerCertificate TrustServerCertificate false true sunucu sertifikası doğrulamasını atlar. olduğunda Encrypt=Strictyoksayılır. Üretimde kullanmayın.
Host Name In Certificate HostNameInCertificate HostNameInCertificate Empty Sertifika doğrulaması için bir yedek isim. SqlClient önce sertifikayı sunucu adına karşı doğrular Data Source. Sadece o isim eşleşmediğinde kontrol Host Name In Certificate eder, yani yanlış bir değer sunucu adı zaten eşleşiyorsa hata sebep olmaz. Sertifika sabitlemiyor. Belirli bir sertifika talep etmek için Server Certificate. Ağ hedefini değiştirmez veya güven zinciri ile son kullanma süresi kontrollerini atlamıyor. Sunucu adı sertifikayla eşleşiyorsa ayarsız bırakın.
Server Certificate ServerCertificate ServerCertificate Empty Sunucu sertifikasıyla tam olarak eşleşmesi gereken bir PEM, DER veya CER dosyasının yolu. Sürücü eşleşmeyi yalnızca sertifikayı doğruladığında kontrol eder, yani veya Encrypt=Strict ile ve Trust Server Certificate=falseile kullanınEncrypt=Mandatory. Eşleşen bir dosya, zincir ve ana bilgisayar adı doğrulamasının yerini alır, bu yüzden istemcinin güvenmediği kendi kendine imzalanmış bir sertifikayla çalışır.

Tam doğrulama kuralları için Şifreleme ve sertifika doğrulaması bölümünü ziyaret edin.

Her Zaman Şifreli Seçenekler

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Column Encryption Setting ColumnEncryption ColumnEncryptionSetting Disabled Enabled bağlantı için Always Encrypted açılıyor.
Attestation Protocol Hiç kimse AttestationProtocol Belirtilmemiş Enclave doğrulama protokolü: AAS, HGS, veya None.
Enclave Attestation Url Hiç kimse EnclaveAttestationUrl Empty Always Encrypted with secure enclave için doğrulama servisi uç noktası.

Ağ seçenekleri

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Multi Subnet Failover MultiSubnetFailover MultiSubnetFailover false Sunucu adının çözümlendiği tüm IP adreslerini paralel olarak dener. TCP üzerinden ulaşılan erişilebilirlik grubu dinleyicileri ve yedekleme kümesi örnekleri için kullanın. Veritabanı yansıtma desteği yok. Adlandırılmış örnekler, ağ uygulamasına bağlıdır. .NET'in Linux ve macOS'ta ve Windows'ta yönetilen ağ açıkken kullandığı yönetilen uygulama, adlandırılmış bir örneği destekler ve SQL Server Browser isteğini her çözülen adrese paralel olarak gönderir. Windows'taki yerel uygulama, SNI hatası 48 ile adlandırılmış bir örneği reddedebilir.
IP Address Preference IPAddressPreference IPAddressPreference IPv4First Çözülmüş adresleri deneme sırası: IPv4First, IPv6First, veya UsePlatformDefault.
Packet Size PacketSize PacketSize 8000 Tablolu Veri Akışı (TDS) paket boyutu bayt cinsinden, 512'den 32.768'e kadar.

Süreç genelinde bir AppContext anahtarı, varsayılan Multi Subnet Failover olarak değiştirilebilir true. Daha fazla bilgi için SqlClient'taki AppContext anahtarlarına bakınız.

Mola seçenekleri

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Connect Timeout Connection Timeout, ConnectTimeout, Timeout ConnectTimeout 15 Bağlantı için beklemek için saniyeler, havuz dolduğunda havuzlu bağlantı için beklemek de dahil. 0 Süresiz bekler.
Command Timeout Hiç kimse CommandTimeout 30 CommandTimeout Bağlantı üzerinde oluşturulan komutlar için varsayılan saniyeler. 0 Süresiz bekler.

Connect Timeout sorgu yürütülmesini sınırlamaz. Command Timeout Girişi veya havuzlu bağlantı beklemesini sınırlamaz. A'yı CancellationToken asenkron çağrılara geçirin ki arayan kişi her iki zaman aşımından önce beklemeyi bırakabilir.

Bağlantı kurtarma seçenekleri

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Connect Retry Count ConnectRetryCount ConnectRetryCount 1 İlk açılışta ve bozuk boşta bağlantıyı geri getirirken nitelikli geçici bir arızadan sonra tekrar denemeler. 0 Yeniden denemeleri kapatır. Geçerli değerler 0 ile 255 arasındadır.
Connect Retry Interval ConnectRetryInterval ConnectRetryInterval 10 Tekrar denemeler arasında saniyeler. Geçerli değerler 1'den 60'a kadardır.

Varsayılan olarak , Connect Retry Count1sürücü Azure SQL uç noktaları için ve 5 Azure Synapse Analytics sunucusuz SQL havuz uç noktaları için bozuk bir boşta bağlantıyı geri getirdiğinde kullanır2. İlk açılış değeri ayar olarak kullanır, bu yüzden varsayılan olarak her uç noktada bir kez tekrar deneme izin verir. Sürücü, her iki durumda da belirlenen diğer değerleri kullanır.

Bu anahtar kelimeler, çalışırken başarısız olan bir komutu tekrar denemez. Bir açık için yerleşik yeniden denemeyi atlamak için, Open .OpenWithoutRetry Özel politikalar için Configurable retry logic'e bakınız. Bir komutu tekrar tekrar tekrar etmek güvenli olduğunda tekrar deneyin.

Havuzlama seçenekleri

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Pooling Hiç kimse Pooling true Bağlantı dizelerini eşleştirmek için fiziksel bağlantıları yeniden kullanır.
Min Pool Size Hiç kimse MinPoolSize 0 Havuz oluşturulduktan sonra açık tutan fiziksel bağlantılar.
Max Pool Size Hiç kimse MaxPoolSize 100 Bir havuzda en fazla fiziksel bağlantı. En az 1 olmalıdır.
Connection Idle Timeout Hiç kimse IdleTimeout 300 Havuzda bir bağlantının boşta kalması ve havuz kapanmadan önce birkaç saniye. 0 Boşta son kullanma süresini kapatır. Sadece Switch.Microsoft.Data.SqlClient.UseLegacyIdleTimeoutBehavior AppContext anahtarı olduğunda falsezorunlu kalıyor. Varsayılan olarak değeridir true.
Load Balance Timeout Connection Lifetime LoadBalanceTimeout 0 Bir bağlantının saniye cinsinden maksimum yaşı havuza geri dönüyor. Eski bir bağlantı kapalı. 0 Limiti kapatır.
Pool Blocking Period PoolBlockingPeriod PoolBlockingPeriod Auto Havuzun kısa süreliğine önbelleklenmiş giriş hatasını yeniden atması mı: Auto, AlwaysBlock, veya NeverBlock. AutoAzure SQL endpoints için engellemeyi kapatır.

Her ayrı bağlantı dizesi kendi havuzuna sahiptir. Havuz anahtarları, temizleme ve boşta zaman için bkz. SQL Server bağlantı havuzu.

İşlem ve oturum seçenekleri

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Enlist Hiç kimse Enlist true Açıldığında ortam System.Transactions işleminde bağlantıyı kaydeder.
Transaction Binding Hiç kimse TransactionBinding Implicit Unbind Implicit Unbind Kayıtlı işlem sona erdiğinde bağlantıyı koparır. Explicit Unbind bağlantı kapanana veya kod koparana kadar bağlı tutuyor.
Multiple Active Result Sets MultipleActiveResultSets MultipleActiveResultSets false Bir bağlantıda birden fazla aktif partiye izin veriyor.
Type System Version Hiç kimse TypeSystemVersion Latest Sürücünün açıkladığı sunucu tipi sistem. , , SQL Server 2008, ve SQL Server 2005kabul SQL Server 2012Latesteder. Bırak Latest.
Replication Hiç kimse Replication false Bağlantıyı bir çoğaltma bağlantısı olarak tanımlar.

.NET Framework sadece seçenekler

Bu anahtar kelimeler yalnızca .NET Framework'te kabul edilir. .NET'te, builder NotSupportedException atıp SqlConnectionArgumentExceptionatıyor ve atıyor.

Anahtar kelime Aliases İnşaatçı mülkü Varsayılan Açıklama
Network Library Net, Network NetworkLibrary Empty Ağ kütüphanesi. Bağlantı bozulduğu için bir tcp: veya np: ön ek ile Data Sourcebirleştirmeyin. .NET'te ise preek Data Source ile tcp: veya np: ile kullanabilirsiniz.
Connection Reset Hiç kimse ConnectionReset true Obsolete.
Transparent Network IP Resolution TransparentNetworkIPResolution TransparentNetworkIPResolution true Obsolete.

Desteklenmeyen anahtar kelimeler

Anahtar kelime Result
Context Connection Context Connection=true atar InvalidOperationException. Microsoft. Data.SqlClient SQL CLR bağlam bağlantılarını desteklemiyor.
Asynchronous Processing Hata ArgumentException: Keyword not supported. Asenkron yöntemler onsuz da çalışır.
Driver, Provider Hata ArgumentException: Keyword not supported. Bu anahtar kelimeler ODBC ve OLE DB'ye aittir.

Doğrulama kuralları

SqlConnectionStringBuilder Belirsiz anahtar kelimeleri ve birçok geçersiz değeri ayarladığınızda reddeder. SqlConnectionbağlantı dizesi'i ayarladığınızda, builder'ın kabul ettiği tek değerler ve anahtar kelimeler kombinasyonları dahil olmak üzere daha fazla kontrol yapar. Oluşturucunun kabul ettiği bir dizi, bağlantı kurulduğunda yine de arızalanabilir.

Yapıcı ve bağlantı bu değerleri şu şekilde ArgumentExceptionreddeder:

  • Connect Timeout, Command Timeout, Load Balance Timeout, Connection Idle Timeout, , veya Min Pool Size 0'dan daha az.
  • Max Pool Size 1'den az.
  • Packet Size 512'den 32.768'e kadar olan yolların dışında.
  • Connect Retry Count 0'dan 255'e kadar dışarıda.
  • Connect Retry Interval 1'den 60'a kadar dışarı.
  • Bu makalede olmayan bir anahtar kelime.

SqlConnection Ayrıca bu değerleri , ArgumentExceptionile reddeder, yapıcı kabul etse bile:

  • Type System Version, SQL Server 2012, SQL Server 2008, veya SQL Server 2005dışındaLatest.
  • Transaction Bindingveya Explicit UnbinddışındaImplicit Unbind.
  • , , Data Source, Failover Partner, , Initial Catalog, User IDWorkstation IDPasswordveya AttachDBFilenameiçin TDS sınırından Current LanguageApplication Namedaha uzun bir değer.

SqlConnectionAyrıca bu kombinasyonları da reddeder:ArgumentException

  • Min Pool Size değerinden büyük Max Pool Size.
  • Failover Partner olmadan Initial Catalog.
  • Failover Partner ile Multi Subnet Failover=true, User Instance=true, veya Application Intent=ReadOnly.
  • Authenticationile Integrated Security=true.
  • Password, Active Directory IntegratedActive Directory Interactive, Active Directory Managed Identity, Active Directory MSI, , Active Directory Default, veya Active Directory Workload Identity.
  • User ID ya da Password ile Active Directory Device Code Flow.

İnceleme seçeneği değişiklikleri

Üretimde bir seçeneği değiştirmeden önce:

  1. Mevcut bağlantı dizesi'i, sürücü sürümünü, uç nokta tipini ve çözdüğünüz sorunu kaydedin.
  2. Bir seçeneği birer değiştir.
  3. Test bağlantısı kurulumu, kimlik doğrulama, sertifika doğrulama, havuzlama, yedekleme, iptal ve sorgu yürütme.
  4. Bağlantı gecikmesini, havuz beklemelerini ve hata sayılarını ölçün.
  5. Her dağıtılan örnekte ayarı onaylayın.

Değişen bir bağlantı dizesi yeni bir havuz oluşturur. Aşamalı dağıtım sırasında, eski ve yeni havuzlar aynı anda bulunur, böylece sunucuya olan toplam fiziksel bağlantı sayısı artabilir.