Verbindingsopties voor Microsoft. Data.SqlClient

Microsoft.Data.SqlClient-verbindingsopties bepalen hoe de driver een verbinding tot stand brengt, identificeert, routeert, opnieuw tot stand probeert te brengen en in een pool opneemt. Stel ze in een verbindingsreeks in of via overeenkomende SqlConnectionStringBuilder eigenschappen.

Voor Microsoft Entra ID-authenticatie, zie Microsoft Entra ID authenticatie. Voor TLS-instellingen, zie Versleuteling en certificaatvalidatie.

Instellingen instellen met SqlConnectionStringBuilder

Gebruik de builder in plaats van fragmenten van verbindingsreeks aan elkaar te koppelen:

var builder = new SqlConnectionStringBuilder
{
    DataSource = "tcp:sql.example.com,1433",
    InitialCatalog = "Orders",
    IntegratedSecurity = true,
    Encrypt = SqlConnectionEncryptOption.Mandatory,
    ApplicationName = "Orders.Worker",
    ConnectTimeout = 30,
    ConnectRetryCount = 3,
    ConnectRetryInterval = 10,
    MultiSubnetFailover = true,
};

De code gebruikt namen van bouwerwoningen. De tabellen gebruiken de gebruikelijke spelling van de verbindingsreeks. De chauffeur accepteert ook gedocumenteerde aliassen.

Opties voor time-out

Keyword Default Gedrag Versie
Connect Timeout 15 seconden Beperkt de tijd om een verbinding te maken. Wanneer de pool op Max Pool Sizeis, beperkt het ook de wachttijd op een bruikbare poolverbinding. Connection Timeout en Timeout aliassen zijn. Alle Microsoft. Data.SqlClient-versies
Command Timeout 30 seconden Stelt de standaard time-out in voor commando's die aan de verbinding zijn gekoppeld. Stel CommandTimeout in voor een commando als een bewerking een andere limiet nodig heeft. Een waarde van 0 heeft geen tijdslimiet en kan werk onbeperkt laten wachten. Microsoft. Data.SqlClient 2.1 en latere versies

Verbindings- en commando-timeouts meten verschillend werk. Connect Timeout Beperkt de uitvoering van zoekopdrachten niet. Command Timeout Beperkt authenticatie of het wachten op een gepoolde verbinding niet.

A CancellationToken staat los van beide instellingen. Geef het door aan OpenAsync, commando-uitvoering en lezersmethoden, zodat de aanroeper kan stoppen met wachten voordat een timeout verloopt.

Workload-identiteit en routeringsopties

Keyword Default Gedrag Versie
Application Name door de aanbieder gedefinieerde naam Identificeert de werklast in SQL Server-sessies, auditing en diagnostiek. Gebruik één stabiele naam met lage cardinaliteit voor elke gedeployde workload. Alle Microsoft. Data.SqlClient-versies
Application Intent ReadWrite ReadOnly vraagt routering voor leesintentie aan wanneer het doel en de beschikbaarheidsgroep daarvoor zijn geconfigureerd. Het maakt SQL-instructies niet alleen-leesbaar. Alle Microsoft. Data.SqlClient-versies

Application Intent=ReadOnly Normaal gesproken wordt deze gekoppeld aan een availability group listener of een service-endpoint dat read routing ondersteunt. Zie Hoge beschikbaarheid en rampenherstel.

Netwerk- en pakketopties

Keyword Default Gedrag Versie
Packet Size 8.000 bytes Stelt de pakketgrootte van de Tabular Data Stream (TDS) in het netwerk. Ondersteunde waarden zijn 512 tot en met 32.768 bytes. Houd de standaard, tenzij workloadmetingen en serverconfiguratie een wijziging rechtvaardigen. Alle Microsoft. Data.SqlClient-versies
MultiSubnetFailover false Gebruikt parallelle TCP-verbindingspogingen met IP-adressen die worden teruggegeven voor een eindpunt met meerdere adressen. Stel het in op true voor Azure SQL-endpoints, availability group listeners en failover-clusterinstanties die via TCP worden bereikt. Alle Microsoft. Data.SqlClient-versies

MultiSubnetFailover=true wordt niet ondersteund voor benoemde instanties, andere protocollen dan TCP, databasespiegeling of eindpunten die zijn geconfigureerd met meer dan 64 IP-adressen. Het is veilig voor een single-IP TCP-endpoint.

Microsoft. Data.SqlClient 7.0 heeft ook een procesbrede AppContext-schakelaar die elke verbinding kan laten functioneren alsof MultiSubnetFailover=true. De standaard verbindingsreeks blijft false wanneer die switch niet is ingeschakeld. Zie AppContext-switches in SqlClient.

Poolopties

Keyword Default Gedrag Versie
Pooling true Hergebruikt fysieke verbindingen om aansluitingsconfiguraties te matchen. Schakel het alleen uit voor diagnose of een gemeten werklast die niet veilig kan worden gepoold. Alle Microsoft. Data.SqlClient-versies
Min Pool Size 0 Behoudt ten minste dit aantal fysieke verbindingen in een pool nadat de pool is aangemaakt. Een positieve waarde kan databasesessies open houden totdat de pool of het proces eindigt. Alle Microsoft. Data.SqlClient-versies
Max Pool Size 100 Begrenst fysieke verbindingen in één pool. Verzoeken wachten tot Connect Timeout het zwembad vol is. Alle Microsoft. Data.SqlClient-versies
Load Balance Timeout 0 Seconden Gooi een verbinding weg wanneer deze terugkeert naar de pool als de leeftijd deze waarde overschrijdt. Connection Lifetime is een alias. 0 Schakelt leeftijdsgebaseerde verwijdering uit. Alle Microsoft. Data.SqlClient-versies
Pool Blocking Period Auto Bepaalt of de pool een in de cache opgeslagen aanmeldingsfout tijdelijk opnieuw genereert. Autoschakelt de blokkeringsperiode uit voor herkende Azure SQL-endpoints en schakelt deze in voor andere endpoints. Alle Microsoft. Data.SqlClient-versies
Enlist true Neemt een geopende verbinding automatisch op in de omringende System.Transactions transactie. Alle Microsoft. Data.SqlClient-versies

Poolinstellingen gelden voor elke afzonderlijke pool, niet voor het hele proces of de databaseserver. Voordat u ophaalt Max Pool Size, bevestig dat verbindingen en lezers snel worden verwijderd en dat de database het resulterende totaal over elke applicatieinstantie kan accepteren.

Voor poolsleutels, tokengedrag, blokkeringsperioden, clearing en diagnostiek, zie SQL Server connection pooling.

Opties voor verbindingsherstel

Keyword Default Gedrag Versie
Connect Retry Count 1 Stelt het aantal retry in voor het kwalificeren van tijdelijke storingen tijdens de eerste verbinding en voor het herstellen van een verbroken idle verbinding. De effectieve standaard is 2 voor erkende Azure SQL-eindpunten en 5 voor erkende Azure Synapse- en on-demand eindpunten. 0 Schakelt deze herpogingen uit. Alle Microsoft. Data.SqlClient-versies
Connect Retry Interval 10 seconden Stelt de vertraging in voordat latere pogingen tot de initiële verbinding of herstelpogingen na inactiviteit worden gedaan. Geldige waarden zijn 1 tot en met 60 seconden. Alle Microsoft. Data.SqlClient-versies

De eerste herpoging tijdens het herstel van de verbinding is onmiddellijk. Connect Retry Interval Van toepassing vóór latere pogingen. Om de ingebouwde initiële open herpoging voor één bewerking te omzeilen, gebruik je een open overload met OpenWithoutRetry.

Deze sleutelwoorden proberen een commando dat mislukt terwijl het wordt uitgevoerd niet opnieuw uit te voeren. Gebruik configureerbare herkansingslogica voor een aangepast open- of commandobeleid. Voer opdrachten alleen opnieuw uit wanneer de gevolgen ervan veilig kunnen worden herhaald.

Serveridentiteit en certificaatopties

Deze opties lossen specifieke naamgevingsvereisten voor certificaten of Kerberos op. Ze vervangen de normale authenticatie en certificaatvalidatie niet.

Keyword Default Gedrag Versie
Host Name In Certificate Serverhostnaam Geeft de verwachte Common Name (CN) of Subject Alternative Name (SAN) wanneer de verbinding een DNS-alias gebruikt die verschilt van het certificaat. Microsoft. Data.SqlClient 5.0 en latere versies
Server Certificate Leeg Levert een PEM-, DER- of CER-bestand dat exact overeenkomt met het servercertificaat wanneer Encrypt=Mandatory of Encrypt=Strict. Microsoft. Data.SqlClient 5.1 en latere versies
Server SPN Afgeleid van de servernaam Overschrijft de Service Principal Name (SPN) die wordt gebruikt voor geïntegreerde authenticatie naar de primaire server. Configureer het alleen wanneer de geïmplementeerde Kerberos-naam een expliciet SPN vereist. Microsoft. Data.SqlClient 5.0 en latere versies
Failover Partner SPN Afgeleid van de failoverpartner Overschrijft de SPN voor een database-mirroring failoverpartner. Databasespiegeling is verouderd. Gebruik beschikbaarheidsgroepen voor nieuwe deployments. Microsoft. Data.SqlClient 5.0 en latere versies

Host Name In Certificate verandert de naam die wordt gebruikt voor certificaatmatching. Het vertrouwt een niet-vertrouwde uitgever niet. Server Certificate pint een exact certificaatbestand en vereist een applicatie-update wanneer dat certificaat roteert.

Onjuiste SPN-overrides kunnen Kerberos-authenticatie verhinderen of de beoogde identiteitscontrole verzwakken. Corrigeer DNS- en SPN-registraties in plaats van uitzonderingen in te stellen, indien mogelijk.

Houd de verbindingslijnen klein. Voeg alleen een optie toe als je kunt aangeven welk gedrag het verandert en hoe de werklast dat gedrag verifieert.

Wijzigingen in de optie bekijken

Voordat je een optie in productie verandert:

  1. Noteer de huidige verbindingsreeks, driverversie, eindpunttype en waargenomen probleem.
  2. Verander één gedrag tegelijk.
  3. Test verbindingsopbouw, authenticatie, certificaatvalidatie, pooling, failover, annulering en het uitvoeren van query's.
  4. Meet harde verbindingen, poolwachttijden, verbindingslatentie en foutgetallen.
  5. Bevestig de instelling op elke gedeployeerde instantie.

Verbindingsstrings maken deel uit van de poolsleutel. Een gefaseerde uitrol kan tijdelijk zowel oude als nieuwe pools creëren, wat het totale aantal fysieke databaseverbindingen verhoogt.