Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera wszystkie słowa kluczowe parametry połączenia, które akceptuje Microsoft. Data.SqlClient. Każde słowo kluczowe ma również właściwość dopasowania SqlConnectionStringBuilder . Wstęp, wspólne wzorce i reguły parsowania można znaleźć w sekcji Strings Connection.
Słowa kluczowe i aliasy nie są rozróżniane na wielka literę. Gdy ustawiasz wartość przez nieruchomość budowniczego, deweloper wpisuje kanoniczne słowo kluczowe w kolumnie Słowo Kluczowe .
Ustaw opcje za pomocą SqlConnectionStringBuilder
Zacznij od podstawowego parametry połączenia, który zawiera serwer, bazę danych i ustawienia uwierzytelniania. Następnie ustaw opcje specyficzne dla obciążenia przez właściwości buildera. Zakładki .NET Framework używają C# 7.3. Aby stworzyć projekt, który uruchamia próbki, zobacz Utwórz projekt.
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}");
Dane wyjściowe to:
APP_NAME(): Orders.Worker
Connection timeout: 30
Command timeout: 60
Nowy SqlCommand pobiera domyślny czas od Command Timeout słowa kluczowego swojego połączenia.
Sprawdź wartości domyślne
Nowy SqlConnectionStringBuilder raportuje domyślne ustawienia dla każdej opcji. Ten program drukuje domyślne dane, które większość aplikacji przegląda:
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}");
W .NET wyjście to:
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 to Mandatory opcja. W .NET Framework domyślna nazwa aplikacji to Framework Microsoft SqlClient Dostawca danych.
Opcje serwera i bazy danych
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Data Source |
Server, Address, Addr, Network Address |
DataSource |
Pusty | Serwer, do którego trzeba się połączyć. Akceptuje nazwę hosta, host,port, host\instance, (localdb)\instance, oraz prefiks protokołu tcp: or np: . Dla zaakceptowanych formularzy zobacz Określ serwer i bazę danych. |
Initial Catalog |
Database |
InitialCatalog |
Pusty | Baza danych do korzystania po zalogowaniu. Gdy jest pusty, serwer korzysta z domyślnej bazy danych logowania. |
AttachDbFilename |
Extended Properties, Initial File Name |
AttachDBFilename |
Pusty | Pełna ścieżka głównego pliku bazy danych do dołączenia, dla SQL Server Express i LocalDB. |
User Instance |
Żaden | UserInstance |
false |
Przekierowuje połączenie do instancji użytkownika SQL Server Express. Więcej informacji można znaleźć w sekcji SQL Server Express user instances. |
Failover Partner |
FailoverPartner |
FailoverPartner |
Pusty | Partner do mirroringu bazy danych próbuje spróbować, gdy główny serwer jest niedostępny. Dublowanie bazy danych jest przestarzałe. Używaj grup dostępności do nowych wdrożeń. |
Current Language |
Language |
CurrentLanguage |
Pusty | Nazwa języka SQL Server dla sesji, taka jak us_english. Kontroluje formaty dat i język komunikatów systemowych. |
Opcje tożsamości aplikacji
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Application Name |
App |
ApplicationName |
Core Microsoft SqlClient Data Provider |
Nazwa, którą serwer raportuje przez APP_NAME() i w widokach sesji. Używaj jednej nazwy stabilnej dla każdego wdrożonego obciążenia. Różne wartości tworzą odrębne pule połączeń. |
Workstation ID |
WorkstationID, WSID |
WorkstationID |
Nazwa komputera lokalnego | Nazwa komputera klienta, którą serwer raportuje przez HOST_NAME(). |
Application Intent |
ApplicationIntent |
ApplicationIntent |
ReadWrite |
ReadOnly Żąda routingu z zamiarem odczytu, gdy cel to wspiera. Nie robi stwierdzeń tylko do odczytu. Więcej informacji można znaleźć w artykule Wysoka dostępność i odzyskiwanie po awarii. |
Aby zgłosić, który framework lub narzędzie otworzyło połączenie, użyj RegisteredApplication tej właściwości. Nie ma słowa kluczowego parametry połączenia. Więcej informacji można znaleźć w artykule Zgłoś tożsamość aplikacji.
Opcje uwierzytelniania
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Authentication |
Żaden | Authentication |
Nieokreślona | Metoda uwierzytelniania. Akceptowane wartości można znaleźć w poniższej tabeli. |
Integrated Security |
Trusted_Connection |
IntegratedSecurity |
false |
true, yes, lub sspi używa tożsamości bieżącego procesu. |
User ID |
UID, User |
UserID |
Pusty | Nazwa logowania SQL lub identyfikator użytkownika lub klienta Microsoft Entra ID, w zależności od Authentication. |
Password |
PWD |
Password |
Pusty | Hasło lub sekret klienta dla metod, które je akceptują. |
Persist Security Info |
PersistSecurityInfo |
PersistSecurityInfo |
false |
Gdy false, sterownik usuwa hasło po SqlConnection.ConnectionString otwarciu połączenia. Zostaw to false. |
Server SPN |
ServerSPN |
ServerSPN |
Pochodzi od nazwy serwera | Nadpisuje nazwę Głównej Usługi (SPN) używaną do zintegrowanej autoryzacji do serwera głównego. |
Failover Partner SPN |
FailoverPartnerSPN |
FailoverPartnerSPN |
Wywodząc się od nazwy partnera | Nadpisuje SPN używany do zintegrowanej autentykacji do partnera awaryjnego. |
Authentication akceptuje te wartości. Budownik zapisuje je bez spacji, takich jak ActiveDirectoryDefault, a parser akceptuje obie formy.
| Value | Identity |
|---|---|
Sql Password |
Logowanie SQL z User ID pomocą i Password. |
Active Directory Default |
Łańcuch źródeł poświadczeń, takich jak zmienne środowiskowe, tożsamość zarządzana oraz logowanie do narzędzi deweloperskich. |
Active Directory Managed Identity |
Zarządzana tożsamość. Ustaw User ID identyfikator klienta tożsamości przypisanej przez użytkownika.
Active Directory MSI jest aliasem. |
Active Directory Workload Identity |
Tożsamość obciążenia Kubernetes. |
Active Directory Service Principal |
Aplikacja z User ID określoną na identyfikator klienta i Password sekret klienta. |
Active Directory Interactive |
Użytkownik logujący się przez komunikat przeglądarki. |
Active Directory Device Code Flow |
Użytkownik, który loguje się na innym urządzeniu za pomocą kodu. |
Active Directory Integrated |
Zalogowany użytkownik Windows, poprzez federacyjną lub bezproblemową konfigurację pojedynczego logowania. |
Active Directory Password |
Nazwa użytkownika i hasło. Ta metoda jest przestarzała. Użyj innej metody. |
Metody Microsoft Entra ID wymagają pakietuMicrosoft.Data.SqlClient.Extensions.Azure. Aby uzyskać informacje o konfiguracji i przykładach, zobacz uwierzytelnianie Microsoft Entra ID oraz uwierzytelnianie SQL Server.
Opcje szyfrowania
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Encrypt |
Żaden | Encrypt |
Mandatory |
Strict używa TDS 8.0 i zawsze weryfikuje certyfikat serwera.
Mandatory, true, lub yes szyfruje połączenie.
Optional, false, lub no szyfruje całe połączenie tylko wtedy, gdy serwer tego wymaga. Gdy serwer obsługuje szyfrowanie, ale go nie wymaga, szyfrowany jest tylko pakiet logowania. |
Trust Server Certificate |
TrustServerCertificate |
TrustServerCertificate |
false |
true pomija walidację certyfikatów serwera. Ignorowane, gdy Encrypt=Strict. Nie używaj go w środowisku produkcyjnym. |
Host Name In Certificate |
HostNameInCertificate |
HostNameInCertificate |
Pusty | Alternatywna nazwa walidacji certyfikatów. SqlClient najpierw weryfikuje certyfikat względem nazwy serwera w Data Source. Sprawdza Host Name In Certificate tylko wtedy, gdy ta nazwa się nie zgadza, więc błędna wartość nie powoduje awarii, gdy nazwa serwera już się zgadza. Nie przypina certyfikatu. Aby wymagać konkretnego certyfikatu, użyj Server Certificate. Nie zmienia to miejsca docelowego sieci ani nie omija kontroli łańcucha zaufania i wygaśnięcia. Zostaw to nieustawione, gdy nazwa serwera już odpowiada certyfikatowi. |
Server Certificate |
ServerCertificate |
ServerCertificate |
Pusty | Ścieżka pliku PEM, DER lub CER musi dokładnie odpowiadać certyfikatowi serwera. Kierowca sprawdza dopasowanie tylko wtedy, gdy potwierdza certyfikat, więc używaj go z Encrypt=Mandatory or Encrypt=Strict i .Trust Server Certificate=false Pasujący plik zastępuje walidację łańcucha i nazw hosta, więc działa z certyfikatem podpisanym przez klienta, któremu klient nie ufa. |
Pełne reguły walidacji można znaleźć w artykule Szyfrowanie i walidacja certyfikatów.
Opcje zawsze szyfrowane
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Column Encryption Setting |
ColumnEncryption |
ColumnEncryptionSetting |
Disabled |
Enabled włącza tryb Zawsze szyfrowany dla połączenia. |
Attestation Protocol |
Żaden | AttestationProtocol |
Nieokreślona | Protokół poświadczenia enklawy: AAS, HGS, lub None. |
Enclave Attestation Url |
Żaden | EnclaveAttestationUrl |
Pusty | Endpoint usługi atestacji dla Always Encrypted z bezpiecznymi enklawami. |
Opcje sieciowe
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Multi Subnet Failover |
MultiSubnetFailover |
MultiSubnetFailover |
false |
Próbuje wszystkich adresów IP, do których równolegle reaguje nazwa serwera. Używaj go do słuchaczy grup dostępności oraz instancji klastrów awaryjnego osiągniętych przez TCP. Nie jest wspierane w mirroringu baz danych. Nazwane instancje zależą od implementacji sieci. Implementacja zarządzana, której .NET używa na Linuksie i macOS oraz na Windows, gdy włączona jest sieć zarządzana, obsługuje nazwaną instancję i wysyła żądanie SQL Server Browser do każdego rozwiązanego adresu równolegle. Natywna implementacja na Windows może odrzucić nazwaną instancję z błędem SNI 48. |
IP Address Preference |
IPAddressPreference |
IPAddressPreference |
IPv4First |
Kolejność próbowania adresów rozwiązanych: IPv4First, IPv6First, lub UsePlatformDefault. |
Packet Size |
PacketSize |
PacketSize |
8000 |
Rozmiar pakietu Tabular Data Stream (TDS) w bajtach od 512 do 32 768. |
Przełącznik AppContext obejmujący cały proces może zmienić domyślne Multi Subnet Failover na .true Więcej informacji można znaleźć w artykule przełączniki AppContext w SqlClient.
Opcje timeoutu
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Connect Timeout |
Connection Timeout, ConnectTimeout, Timeout |
ConnectTimeout |
15 |
Sekundy na oczekiwanie na połączenie, w tym oczekiwanie na połączenie w grupie, gdy pula jest pełna.
0 czeka bez końca. |
Command Timeout |
Żaden | CommandTimeout |
30 |
Domyślne CommandTimeout polecenia utworzone na połączeniu to sekundy.
0 czeka bez końca. |
Connect Timeout Nie ogranicza wykonywania zapytań.
Command Timeout Nie ogranicza logowania ani oczekiwania na połączenie w grupie. Przekaż na połączenia asynchroniczne CancellationToken , aby dzwoniący mógł przestać czekać przed wygaśnięciem któregokolwiek z czasów.
Opcje odzyskiwania połączenia
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Connect Retry Count |
ConnectRetryCount |
ConnectRetryCount |
1 |
Próba ponowna po awarii przejściowej podczas pierwszego otwarcia oraz przy przywracaniu zerwanego połączenia jałowego.
0 wyłącza próby powtórne. Prawidłowe wartości to od 0 do 255. |
Connect Retry Interval |
ConnectRetryInterval |
ConnectRetryInterval |
10 |
Sekundy między próbami ponownych prób. Wartości poprawne to od 1 do 60. |
Gdy Connect Retry Count jest 1, co jest domyślne, sterownik używa 2 dla punktów końcowych Azure SQL oraz 5 dla serwerowych punktów puli SQL bez serwera w Azure Synapse Analytics, gdy przywraca zerwane połączenie bezczynnościowe. Pierwsze otwarcie używa wartości ustawionej, więc domyślnie pozwala na ponowną próbę na każdym końcu końcowym. Sterownik używa dowolnej innej wartości ustawionej w obu przypadkach.
Te słowa kluczowe nie ponawiają polecenia, które zakończy się niepowodzeniem podczas wykonywania. Aby pominąć wbudowaną próbę powtórną dla jednego otwarcia, wywołaj Open przeciążenie z OpenWithoutRetry. Polityki niestandardowe znajdziesz w artykule Konfigurowalna logika powtórek. Powtórz polecenie tylko wtedy, gdy powtórzenie jest bezpieczne.
Opcje łączenia
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Pooling |
Żaden | Pooling |
true |
Ponowne wykorzystanie fizycznych połączeń do dopasowywania ciągów połączeń. |
Min Pool Size |
Żaden | MinPoolSize |
0 |
Fizyczne połączenia, które pula utrzymuje otwartą po jej utworzeniu. |
Max Pool Size |
Żaden | MaxPoolSize |
100 |
Najwięcej fizycznych połączeń w jednej puli. Musi być co najmniej 1. |
Connection Idle Timeout |
Żaden | IdleTimeout |
300 |
Sekundy, które połączenie może pozostać nieaktywne w puli, zanim basen go zamknie.
0 wyłącza bezczynny czas wygaśnięcia. Wymuszane tylko wtedy, gdy Switch.Microsoft.Data.SqlClient.UseLegacyIdleTimeoutBehavior przełącznik AppContext jest .false Domyślnie to jest true. |
Load Balance Timeout |
Connection Lifetime |
LoadBalanceTimeout |
0 |
Maksymalny wiek połączenia w sekundach wracał do puli. Starsze połączenie jest zamknięte.
0 wyłącza limit. |
Pool Blocking Period |
PoolBlockingPeriod |
PoolBlockingPeriod |
Auto |
Czy pula ponownie wyrzuca błąd zalogowania w pamięci podręcznej na krótki czas: Auto, AlwaysBlock, lub NeverBlock.
Autowyłącza blokowanie dla punktów końcowych Azure SQL. |
Każdy odrębny parametry połączenia ma własną pulę. Dla kluczy puli, czyszczenia i czasu bezczynności, zobacz SQL Server pool połączeń.
Opcje transakcyjne i sesyjne
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Enlist |
Żaden | Enlist |
true |
Włącza połączenie do transakcji ambientowej System.Transactions , gdy się otwiera. |
Transaction Binding |
Żaden | TransactionBinding |
Implicit Unbind |
Implicit Unbind Odłącza połączenie, gdy transakcja z podoficerem się kończy.
Explicit Unbind Trzyma go podłączonego, dopóki połączenie się nie zamknie lub kod go nie odłączy. |
Multiple Active Result Sets |
MultipleActiveResultSets |
MultipleActiveResultSets |
false |
Pozwala na więcej niż jedną aktywną partię na jednym połączeniu. |
Type System Version |
Żaden | TypeSystemVersion |
Latest |
System typu serwera, który udostępnia sterownik. Akceptuje Latest, SQL Server 2012, SQL Server 2008, oraz SQL Server 2005. Zostaw na Latest. |
Replication |
Żaden | Replication |
false |
Identyfikuje połączenie jako połączenie replikacyjne. |
Opcje tylko w .NET Framework
Te słowa kluczowe są akceptowane wyłącznie w .NET Framework. Na .NET budowniczor rzuca i SqlConnection rzucaNotSupportedException.ArgumentException
| Keyword | Aliases | Nieruchomość dewelopera | Default | Opis |
|---|---|---|---|---|
Network Library |
Net, Network |
NetworkLibrary |
Pusty | Biblioteka sieciowa. Nie łącz go z przedrostkiem a tcp: lub np: w Data Source, ponieważ połączenie się nie udaje. W .NET należy dodać prefiks Data Source z lub tcp:np: zamiast tego. |
Connection Reset |
Żaden | ConnectionReset |
true |
Obsolete. |
Transparent Network IP Resolution |
TransparentNetworkIPResolution |
TransparentNetworkIPResolution |
true |
Obsolete. |
Nieobsługiwane słowa kluczowe
| Keyword | Result |
|---|---|
Context Connection |
Context Connection=true
InvalidOperationExceptionzgłasza element . Microsoft. Data.SqlClient nie obsługuje połączeń kontekstowych SQL CLR. |
Asynchronous Processing |
Zgłasza element ArgumentException: Keyword not supported. Metody asynchroniczne działają bez niej. |
Driver, Provider |
Zgłasza element ArgumentException: Keyword not supported. Te słowa kluczowe należą do ODBC i OLE DB. |
Reguły walidacji
SqlConnectionStringBuilder Odrzuca nieznane słowa kluczowe i wiele nieprawidłowych wartości, gdy je ustawisz.
SqlConnectionWykonuje więcej kontroli, gdy ustawiasz parametry połączenia, w tym pojedyncze wartości akceptowane przez kreator oraz kombinacje słów kluczowych. Ciąg znaków, który deweloper zaakceptuje, może nadal zawiódć po utworzeniu połączenia.
Budowniczy i połączenie odrzucają te wartości z :ArgumentException
-
Connect Timeout,Command Timeout,Load Balance Timeout,Connection Idle Timeout, lubMin Pool Sizemniej niż 0. -
Max Pool Sizemniej niż 1. -
Packet Sizepoza 512 do 32 768. -
Connect Retry Countpoza 0 do 255. -
Connect Retry Intervalna zewnątrz od 1 do 60. - To słowo kluczowe, którego nie ma w tym artykule.
SqlConnection odrzuca także te wartości z ArgumentException, mimo że budowniczy je akceptuje:
-
Type System VersionpozaLatest,SQL Server 2012,SQL Server 2008, lubSQL Server 2005. -
Transaction BindingpozaImplicit UnbindlubExplicit Unbind. - Wartość dłuższa niż limit TDS dla
Application Name,Current Language,Data Source,Failover PartnerInitial Catalog, ,Password,User ID, ,Workstation ID, lubAttachDBFilename.
SqlConnection odrzuca także te kombinacje z ArgumentException:
-
Min Pool Sizewiększe niżMax Pool Size. -
Failover PartnerbezInitial Catalog. -
Failover PartnerzMulti Subnet Failover=true,User Instance=true, lubApplication Intent=ReadOnly. -
Authenticationza pomocąIntegrated Security=true. -
PasswordzActive Directory Integrated,Active Directory Interactive,Active Directory Managed Identity,Active Directory MSI, ,Active Directory DefaultlubActive Directory Workload Identity. -
User IDlubPasswordz .Active Directory Device Code Flow
Przejrzyj zmiany opcji
Zanim zmienisz opcję w produkcji:
- Zanotuj aktualny parametry połączenia, wersję sterownika, typ endpointu oraz rozwiązany problem.
- Zmieniaj jedną opcję na raz.
- Testuj nawiązywanie połączenia, uwierzytelnianie, walidację certyfikatów, pulowanie, przełączanie awaryjne, anulowanie oraz wykonywanie zapytań.
- Mierz opóźnienia połączenia, oczekiwania na pulę i liczby błędów.
- Potwierdź to ustawienie na każdej wdrożonej instancji.
Zmieniony parametry połączenia tworzy nową pulę. Podczas etapowego wdrażania istnieją jednocześnie stare i nowe pule, więc łączna liczba fizycznych połączeń z serwerem może rosnąć.