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.
Dit artikel vermeldt elk verbindingsreeks-trefwoord dat Microsoft. Data.SqlClient accepteert. Elk trefwoord heeft ook een overeenkomende SqlConnectionStringBuilder eigenschap. Voor een inleiding, veelvoorkomende patronen en parsingregels, zie Verbindingsstrings.
Trefwoorden en aliassen zijn niet hoofdlettergevoelig. Wanneer je een waarde instelt via een builder-eigenschap, schrijft de builder het canonieke trefwoord in de kolom Trefwoord .
Instellingen instellen met SqlConnectionStringBuilder
Begin met een basis-verbindingsreeks die de server-, database- en authenticatie-instellingen bevat. Stel vervolgens workload-specifieke opties in via builder-eigenschappen. De .NET Framework-tabbladen gebruiken C# 7.3. Om een project te maken dat de samples uitvoert, zie Create the project.
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}");
De uitvoer is:
APP_NAME(): Orders.Worker
Connection timeout: 30
Command timeout: 60
Een nieuwe SqlCommand neemt zijn standaard time-out uit het Command Timeout sleutelwoord van zijn verbinding.
Controleer de standaardwaarden
Een nieuwe SqlConnectionStringBuilder meldt de standaard voor elke optie. Dit programma print de standaardwaarden af die de meeste applicaties beoordelen:
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}");
Op .NET is de uitvoer:
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 is de Mandatory optie. Op .NET Framework is Framework Microsoft SqlClient Data Providerde standaard applicatienaam .
Server- en databaseopties
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Data Source |
Server,Address,Addr,Network Address |
DataSource |
Leeg | De server om mee te verbinden. Accepteert een hostnaam, host,port, , , (localdb)\instanceen een tcp: of protocolprefix np:host\instance. Voor de geaccepteerde formulieren, zie Specificeer de server en database. |
Initial Catalog |
Database |
InitialCatalog |
Leeg | De database om te gebruiken na het inloggen. Wanneer deze leeg is, gebruikt de server de standaarddatabase van de login. |
AttachDbFilename |
Extended Properties, Initial File Name |
AttachDBFilename |
Leeg | Het volledige pad van een primaire databasebestand om aan te koppelen, voor SQL Server Express en LocalDB. |
User Instance |
None | UserInstance |
false |
Leidt de verbinding om naar een SQL Server Express-gebruikersinstantie. Voor meer informatie, zie SQL Server Express gebruikersinstanties. |
Failover Partner |
FailoverPartner |
FailoverPartner |
Leeg | De database mirroring-partner om te proberen wanneer de primaire server niet beschikbaar is. Databasespiegeling is verouderd. Gebruik beschikbaarheidsgroepen voor nieuwe deployments. |
Current Language |
Language |
CurrentLanguage |
Leeg | De SQL Server-taalnaam voor de sessie, zoals us_english. Beheert datumformaten en systeemberichttaal. |
Applicatie-identiteitsopties
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Application Name |
App |
ApplicationName |
Core Microsoft SqlClient Data Provider |
De naam die de server rapporteert via APP_NAME() en in sessieweergaven. Gebruik één stabiele naam voor elke gedeployeerde workload. Verschillende waarden creëren aparte verbindingspools. |
Workstation ID |
WorkstationID, WSID |
WorkstationID |
De naam van de lokale computer | De naam van de clientcomputer waaraan HOST_NAME()de server rapporteert. |
Application Intent |
ApplicationIntent |
ApplicationIntent |
ReadWrite |
ReadOnly vraagt read-intent routing op wanneer het doelwit dit ondersteunt. Het maakt geen statements alleen-lezen. Voor meer informatie, zie Hoge beschikbaarheid en rampenherstel. |
Om te rapporteren welk framework of tool een verbinding heeft geopend, gebruik je de RegisteredApplication eigenschap. Het heeft geen verbindingsreeks-sleutelwoord. Voor meer informatie, zie Rapporteer de applicatieidentiteit.
Verificatieopties
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Authentication |
None | Authentication |
Niet opgegeven | De verificatiemethode. Voor geaccepteerde waarden, zie de volgende tabel. |
Integrated Security |
Trusted_Connection |
IntegratedSecurity |
false |
true, yes, of sspi gebruikt de identiteit van het huidige proces. |
User ID |
UID, User |
UserID |
Leeg | De SQL-loginnaam, of de gebruikers- of clientidentificatie van de Microsoft Entra ID, afhankelijk van Authentication. |
Password |
PWD |
Password |
Leeg | Het wachtwoord of het client secret voor methoden die er een accepteren. |
Persist Security Info |
PersistSecurityInfo |
PersistSecurityInfo |
false |
Wanneer false, verwijdert de driver het wachtwoord van SqlConnection.ConnectionString nadat de verbinding is geopend. Laat maar.false |
Server SPN |
ServerSPN |
ServerSPN |
Afgeleid van de servernaam | Overschrijft de Service Principal Name (SPN) die wordt gebruikt voor geïntegreerde authenticatie naar de primaire server. |
Failover Partner SPN |
FailoverPartnerSPN |
FailoverPartnerSPN |
Afgeleid van de partnernaam | Overschrijft het SPN dat wordt gebruikt voor geïntegreerde authenticatie naar de failoverpartner. |
Authentication deze waarden accepteert. De bouwer schrijft ze zonder spaties zoals ActiveDirectoryDefault, en de parser accepteert beide vormen.
| Value | Identity |
|---|---|
Sql Password |
Een SQL-login met User ID en Password. |
Active Directory Default |
Een keten van inloggegevensbronnen, zoals omgevingsvariabelen, beheerde identiteit en aanmelden van een ontwikkelaarstool. |
Active Directory Managed Identity |
Een beheerde identiteit. Stel dit User ID in op de client-ID van een door de gebruiker toegewezen identiteit.
Active Directory MSI is een alias. |
Active Directory Workload Identity |
Een Kubernetes-werklastidentiteit. |
Active Directory Service Principal |
Een applicatie die User ID is ingesteld op de client-ID en Password ingesteld op het client secret. |
Active Directory Interactive |
Een gebruiker die inlogt via een browserprompt. |
Active Directory Device Code Flow |
Een gebruiker die inlogt op een ander apparaat met een code. |
Active Directory Integrated |
De ingelogde Windows-gebruiker, via een gefedereerde of naadloze single sign-on configuratie. |
Active Directory Password |
Een gebruikersnaam en wachtwoord. Deze methode is verouderd. Gebruik een andere methode. |
Microsoft Entra ID-methoden hebben het Microsoft.Data.SqlClient.Extensions.Azure pakket nodig. Voor de opstelling en voorbeelden, zie Microsoft Entra ID-authenticatie en SQL Server-authenticatie.
Versleutelingsopties
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Encrypt |
None | Encrypt |
Mandatory |
Strict gebruikt TDS 8.0 en valideert altijd het servercertificaat.
Mandatory, true, of yes versleutelt de verbinding.
Optional, false, of no versleutelt de hele verbinding alleen wanneer de server dat vereist. Wanneer de server encryptie ondersteunt maar het niet vereist, wordt alleen het inlogpakket versleuteld. |
Trust Server Certificate |
TrustServerCertificate |
TrustServerCertificate |
false |
true Slaat servercertificaatvalidatie over. Genegeerd wanneer Encrypt=Strict. Gebruik het niet in productie. |
Host Name In Certificate |
HostNameInCertificate |
HostNameInCertificate |
Leeg | Een fallback-naam voor certificaatvalidatie. SqlClient valideert het certificaat eerst aan de hand van de servernaam in Data Source. Het controleert Host Name In Certificate alleen als die naam niet overeenkomt, dus een verkeerde waarde veroorzaakt geen storing als de servernaam al overeenkomt. Het prikt geen certificaat vast. Om een specifiek certificaat te vereisen, gebruik Server Certificate. Het verandert de netwerkbestemming niet en omzeilt geen trustchain- en vervalcontroles. Laat het niet ingesteld als de servernaam al overeenkomt met het certificaat. |
Server Certificate |
ServerCertificate |
ServerCertificate |
Leeg | Het pad van een PEM-, DER- of CER-bestand dat exact overeenkomt met het servercertificaat. De bestuurder controleert de match alleen wanneer het certificaat wordt gevalideerd, dus gebruik het met Encrypt=Mandatory of Encrypt=Strict en Trust Server Certificate=false. Een overeenkomend bestand vervangt de verificatie van keten en hostnaam, dus het werkt met een zelfondertekend certificaat dat de client niet vertrouwt. |
Voor de volledige validatieregels, zie Versleuteling en certificaatvalidatie.
Altijd versleutelde opties
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Column Encryption Setting |
ColumnEncryption |
ColumnEncryptionSetting |
Disabled |
Enabled zet Altijd Versleuteld aan voor de verbinding. |
Attestation Protocol |
None | AttestationProtocol |
Niet opgegeven | Het enclave-attestatieprotocol: AAS, HGS, of None. |
Enclave Attestation Url |
None | EnclaveAttestationUrl |
Leeg | Het bevestigingsservice-eindpunt voor Always Encrypted met beveiligde enclaves. |
Netwerkopties
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Multi Subnet Failover |
MultiSubnetFailover |
MultiSubnetFailover |
false |
Probeert alle IP-adressen waar de servernaam naartoe wordt opgelost parallel. Gebruik het voor beschikbaarheidsgroepluisteraars en failover-clusterinstanties die via TCP worden bereikt. Niet ondersteund met databasespiegeling. Benoemde instanties zijn afhankelijk van de netwerkimplementatie. De beheerde implementatie, die .NET gebruikt op Linux en macOS en op Windows wanneer managed networking actief is, ondersteunt een benoemde instantie en stuurt het SQL Server Browser-verzoek parallel naar elk opgelost adres. De native implementatie op Windows kan een benoemde instantie met SNI-fout 48 weigeren. |
IP Address Preference |
IPAddressPreference |
IPAddressPreference |
IPv4First |
De volgorde voor het proberen van opgeloste adressen: IPv4First, IPv6First, , of UsePlatformDefault. |
Packet Size |
PacketSize |
PacketSize |
8000 |
De pakketgrootte van de Tabular Data Stream (TDS) in bytes, van 512 tot en met 32.768. |
Een procesbrede AppContext-switch kan de Multi Subnet Failover standaard veranderen naar true. Voor meer informatie, zie AppContext-switches in SqlClient.
Opties voor time-out
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Connect Timeout |
Connection Timeout, ConnectTimeout, Timeout |
ConnectTimeout |
15 |
Seconden om te wachten op een verbinding, inclusief het wachten op een gepoolde verbinding wanneer de pool vol is.
0 Wacht oneindig. |
Command Timeout |
None | CommandTimeout |
30 |
De standaard CommandTimeout in seconden voor commando's die op de verbinding worden aangemaakt.
0 Wacht oneindig. |
Connect Timeout Beperkt de uitvoering van zoekopdrachten niet.
Command Timeout Het beperkt het inloggen of het wachten op een gepoolde verbinding niet. Geef a CancellationToken door aan asynchrone oproepen zodat de beller kan stoppen met wachten voordat een van de time-outs verloopt.
Opties voor verbindingsherstel
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Connect Retry Count |
ConnectRetryCount |
ConnectRetryCount |
1 |
Herkansingen na een kwalificatie-tijdelijke storing tijdens de eerste opening en bij het herstellen van een kapotte stationaire verbinding.
0 zet herhalingen uit. Geldige waarden zijn 0 tot en met 255. |
Connect Retry Interval |
ConnectRetryInterval |
ConnectRetryInterval |
10 |
Seconden tussen herpogingen. Geldige waarden zijn 1 tot en met 60. |
Wanneer Connect Retry Count , 1wat de standaard is, gebruikt 2 de driver voor Azure SQL-endpoints en 5 voor Azure Synapse Analytics serverless SQL-pool-endpoints wanneer een verbroken idle-verbinding wordt hersteld. De eerste open gebruikt de waarde zoals ingesteld, dus de standaard staat één herpoging toe op elk eindpunt. De driver gebruikt in beide gevallen elke andere waarde als ingesteld.
Deze sleutelwoorden proberen een commando dat mislukt terwijl het wordt uitgevoerd niet opnieuw uit te voeren. Om de ingebouwde herpoging voor één open over te slaan, roep een Open overload aan met OpenWithoutRetry. Voor aangepaste beleidslijnen, zie Configurable retry logic. Probeer een commando alleen opnieuw als het herhalen veilig is.
Poolopties
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Pooling |
None | Pooling |
true |
Hergebruikt fysieke verbindingen om verbindingsstrings te matchen. |
Min Pool Size |
None | MinPoolSize |
0 |
Fysieke verbindingen die het zwembad openhoudt nadat het is aangemaakt. |
Max Pool Size |
None | MaxPoolSize |
100 |
De meeste fysieke verbindingen in één zwembad. Moet ten minste 1 zijn. |
Connection Idle Timeout |
None | IdleTimeout |
300 |
Seconden dat een verbinding in het zwembad kan blijven staan voordat het zwembad het sluit.
0 Zet stationair uitlopen uit. Alleen afgedwongen wanneer de Switch.Microsoft.Data.SqlClient.UseLegacyIdleTimeoutBehavior AppContext-schakelaar is false. Dit is standaard true. |
Load Balance Timeout |
Connection Lifetime |
LoadBalanceTimeout |
0 |
De maximale leeftijd in seconden van een verbinding die terugkeert naar het zwembad. Een oudere verbinding is gesloten.
0 Zet de limiet uit. |
Pool Blocking Period |
PoolBlockingPeriod |
PoolBlockingPeriod |
Auto |
Of de pool nu een gecachte loginfout voor korte tijd opnieuw uitvoert: Auto, , AlwaysBlockof NeverBlock.
Autoblokkeert blokkeren voor Azure SQL-endpoints. |
Elke afzonderlijke verbindingsreeks krijgt zijn eigen pool. Voor poolsleutels, clearing en idle time, zie SQL Server connection pooling.
Opties voor transacties en sessies
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Enlist |
None | Enlist |
true |
Voegt de verbinding op in de ambient-transactie System.Transactions wanneer deze wordt geopend. |
Transaction Binding |
None | TransactionBinding |
Implicit Unbind |
Implicit Unbind de verbinding loskoppelt wanneer de onderofficier-transactie eindigt.
Explicit Unbind Houdt het verbonden totdat de verbinding wordt gesloten of de code het losmaakt. |
Multiple Active Result Sets |
MultipleActiveResultSets |
MultipleActiveResultSets |
false |
Staat meer dan één actieve batch op één verbinding toe. |
Type System Version |
None | TypeSystemVersion |
Latest |
Het serversysteem dat de driver blootstelt. Accepteert Latest, SQL Server 2012, SQL Server 2008, en SQL Server 2005. Laat het bij Latest. |
Replication |
None | Replication |
false |
Identificeert de verbinding als een replicatieverbinding. |
.NET Framework alleen opties
Deze trefwoorden worden alleen geaccepteerd op .NET Framework. Op .NET gooit NotSupportedException de bouwer en SqlConnection gooit ArgumentException.
| Keyword | Aliases | Bouwereigendom | Default | Beschrijving |
|---|---|---|---|---|
Network Library |
Net, Network |
NetworkLibrary |
Leeg | De netwerkbibliotheek. Combineer het niet met een tcp: of np: prefix in Data Source, want de verbinding faalt. Op .NET, prefix Data Source met tcp: of np: in plaats daarvan. |
Connection Reset |
None | ConnectionReset |
true |
Obsolete. |
Transparent Network IP Resolution |
TransparentNetworkIPResolution |
TransparentNetworkIPResolution |
true |
Obsolete. |
Niet-ondersteunde trefwoorden
| Keyword | Result |
|---|---|
Context Connection |
Context Connection=true gooit InvalidOperationException. Microsoft. Data.SqlClient ondersteunt geen SQL CLR-contextverbindingen. |
Asynchronous Processing |
Werpt ArgumentException: Keyword not supported. Asynchrone methoden werken zonder. |
Driver, Provider |
Werpt ArgumentException: Keyword not supported. Deze trefwoorden behoren tot ODBC en OLE DB. |
Validatieregels
SqlConnectionStringBuilder Weigert onbekende trefwoorden en veel ongeldige waarden wanneer je ze instelt.
SqlConnectionvoert meer controles uit wanneer je de verbindingsreeks instelt, inclusief enkele waarden die de builder accepteert en combinaties van trefwoorden. Een string die de builder accepteert kan nog steeds falen wanneer je de verbinding aanmaakt.
De bouwer en de verbinding verwerpen deze waarden met ArgumentException:
-
Connect Timeout,Command Timeout, , ,Connection Idle Timeout, ofMin Pool SizeLoad Balance Timeoutminder dan 0. -
Max Pool Sizeminder dan 1. -
Packet Sizebuiten 512 tot en met 32.768. -
Connect Retry CountBuiten 0 tot 255. -
Connect Retry IntervalBuiten 1 tot en met 60. - Een trefwoord dat niet in dit artikel voorkomt.
SqlConnection verwerpt deze waarden ook met ArgumentException, ook al accepteert de bouwer ze:
-
Type System VersionbehalveLatest, , ,SQL Server 2008, ofSQL Server 2005SQL Server 2012. -
Transaction BindingbehalveImplicit UnbindofExplicit Unbind. - Een waarde langer dan de TDS-limiet voor , , , ,
Failover PartnerInitial Catalog,Password,User ID,Workstation ID, ofAttachDBFilename.Data SourceCurrent LanguageApplication Name
SqlConnection verwerpt deze combinaties ook met ArgumentException:
-
Min Pool Sizegroter danMax Pool Size. -
Failover PartnerzonderInitial Catalog. -
Failover PartnermetMulti Subnet Failover=true,User Instance=true, ofApplication Intent=ReadOnly. -
AuthenticationmetIntegrated Security=true. -
PasswordmetActive Directory Integrated,Active Directory Interactive, ,Active Directory Managed Identity,Active Directory MSI,Active Directory Default, , ofActive Directory Workload Identity. -
User IDofPasswordmetActive Directory Device Code Flow.
Wijzigingen in de optie bekijken
Voordat je een optie in productie verandert:
- Noteer de huidige verbindingsreeks, de driverversie, het eindpunttype en het probleem dat je oplost.
- Verander één optie tegelijk.
- Test verbindingsopbouw, authenticatie, certificaatvalidatie, pooling, failover, annulering en het uitvoeren van query's.
- Meet verbindingslatentie, poolwachttijden en foutgetallen.
- Bevestig de instelling op elke gedeployeerde instantie.
Een gewijzigde verbindingsreeks creëert een nieuwe pool. Tijdens een gefaseerde uitrol bestaan oude en nieuwe pools tegelijkertijd, waardoor het totale aantal fysieke verbindingen met de server kan stijgen.