Verbindingsopties voor Microsoft. Data.SqlClient

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, of Min Pool SizeLoad Balance Timeoutminder dan 0.
  • Max Pool Size minder dan 1.
  • Packet Size buiten 512 tot en met 32.768.
  • Connect Retry Count Buiten 0 tot 255.
  • Connect Retry Interval Buiten 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 Versionbehalve Latest, , , SQL Server 2008, of SQL Server 2005SQL Server 2012.
  • Transaction Binding behalve Implicit Unbind of Explicit Unbind.
  • Een waarde langer dan de TDS-limiet voor , , , , Failover PartnerInitial Catalog, Password, User ID, Workstation ID, of AttachDBFilename. Data SourceCurrent LanguageApplication Name

SqlConnection verwerpt deze combinaties ook met ArgumentException:

  • Min Pool Size groter dan Max Pool Size.
  • Failover Partner zonder Initial Catalog.
  • Failover Partner met Multi Subnet Failover=true, User Instance=true, of Application Intent=ReadOnly.
  • Authentication met Integrated Security=true.
  • Password met Active Directory Integrated, Active Directory Interactive, , Active Directory Managed Identity, Active Directory MSI, Active Directory Default, , of Active Directory Workload Identity.
  • User ID of Password met Active Directory Device Code Flow.

Wijzigingen in de optie bekijken

Voordat je een optie in productie verandert:

  1. Noteer de huidige verbindingsreeks, de driverversie, het eindpunttype en het probleem dat je oplost.
  2. Verander één optie tegelijk.
  3. Test verbindingsopbouw, authenticatie, certificaatvalidatie, pooling, failover, annulering en het uitvoeren van query's.
  4. Meet verbindingslatentie, poolwachttijden en foutgetallen.
  5. 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.