Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo enumera todas las palabras clave de cadena de conexión que Microsoft. Data.SqlClient acepta. Cada palabra clave también tiene una propiedad de coincidencia SqlConnectionStringBuilder . Para una introducción, patrones comunes y reglas de análisis sintáctico, véase Cadenas de conexión.
Las palabras clave y alias no son sensibles a mayúsculas y minúsculas. Cuando fijas un valor a través de una propiedad constructora, este escribe la palabra clave canónica en la columna Palabra Clave .
Establecer opciones con SqlConnectionStringBuilder
Empieza desde una cadena de conexión base que contiene los ajustes del servidor, la base de datos y la autenticación. Luego establece opciones específicas de carga de trabajo a través de propiedades del constructor. Las pestañas del Marco .NET usan C# 7.3. Para crear un proyecto que ejecute las muestras, consulta Crear el proyecto.
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}");
La salida es la siguiente:
APP_NAME(): Orders.Worker
Connection timeout: 30
Command timeout: 60
Un nuevo SqlCommand toma su tiempo de espera por defecto de la Command Timeout palabra clave de su conexión.
Comprobar valores por defecto
Un nuevo SqlConnectionStringBuilder informa la opción predeterminada para cada opción. Este programa imprime los valores predeterminados que la mayoría de las aplicaciones revisan:
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}");
En .NET, la salida es:
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 es la Mandatory opción. En .NET Framework, el nombre de la aplicación por defecto es Framework Microsoft SqlClient Proveedor de datos.
Opciones de servidor y base de datos
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Data Source |
Server, Address, , Addr, Network Address |
DataSource |
Vacía | El servidor al que conectar. Acepta un nombre de host, host,port, host\instance, (localdb)\instance, y un tcp: prefijo de protocolo or np: . Para los formularios aceptados, consulte Especificar el servidor y la base de datos. |
Initial Catalog |
Database |
InitialCatalog |
Vacía | La base de datos para usar después de iniciar sesión. Cuando está vacía, el servidor utiliza la base de datos predeterminada del usuario de inicio. |
AttachDbFilename |
Extended Properties, Initial File Name |
AttachDBFilename |
Vacía | La ruta completa de un archivo de base de datos principal para adjuntar, para SQL Server Express y LocalDB. |
User Instance |
Ninguno | UserInstance |
false |
Redirige la conexión a una instancia de usuario de SQL Server Express. Para más información, consulte instancias de usuario de SQL Server Express. |
Failover Partner |
FailoverPartner |
FailoverPartner |
Vacía | El socio de espejo de base de datos para probar cuando el servidor principal no está disponible. El reflejo de bases de datos está obsoleto. Usa grupos de disponibilidad para nuevos despliegues. |
Current Language |
Language |
CurrentLanguage |
Vacía | El nombre del lenguaje SQL Server para la sesión, como us_english. Controla los formatos de fecha y el lenguaje de los mensajes del sistema. |
Opciones de identidad de aplicación
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Application Name |
App |
ApplicationName |
Core Microsoft SqlClient Data Provider |
El nombre que el servidor reporta a través APP_NAME() y en las vistas de sesión. Utiliza un nombre estable para cada carga de trabajo desplegada. Valores distintos crean conjuntos de conexiones distintos. |
Workstation ID |
WorkstationID, WSID |
WorkstationID |
Nombre del equipo local | El nombre del ordenador cliente que el servidor reporta a través de HOST_NAME(). |
Application Intent |
ApplicationIntent |
ApplicationIntent |
ReadWrite |
ReadOnly solicita enrutamiento de intención de lectura cuando el destino lo permite. No convierte las declaraciones en solo lectura. Para más información, consulta Alta disponibilidad y recuperación ante desastres. |
Para informar qué framework o herramienta abrió una conexión, utiliza la RegisteredApplication propiedad. No tiene palabra clave de cadena de conexión. Para más información, consulte Reportar la identidad de la aplicación.
Opciones de autenticación
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Authentication |
Ninguno | Authentication |
No especificado | Método de autenticación. Para los valores aceptados, véase la siguiente tabla. |
Integrated Security |
Trusted_Connection |
IntegratedSecurity |
false |
true, yes, o sspi utiliza la identidad del proceso actual. |
User ID |
UID, User |
UserID |
Vacía | El nombre de usuario de SQL, o el identificador de usuario o cliente del Microsoft Entra ID, dependiendo de Authentication. |
Password |
PWD |
Password |
Vacía | La contraseña o el secreto del cliente para los métodos que lo aceptan. |
Persist Security Info |
PersistSecurityInfo |
PersistSecurityInfo |
false |
Cuando false, el controlador elimina la contraseña desde SqlConnection.ConnectionString después de que se abra la conexión. Déjalo false. |
Server SPN |
ServerSPN |
ServerSPN |
Derivado del nombre del servidor | Anula el Nombre Principal del Servicio (SPN) utilizado para la autenticación integrada al servidor principal. |
Failover Partner SPN |
FailoverPartnerSPN |
FailoverPartnerSPN |
Derivado del nombre de socio | Anula el SPN utilizado para la autenticación integrada al socio de conmutación por error. |
Authentication acepta estos valores. El constructor las escribe sin espacios, como ActiveDirectoryDefault, y el analizador acepta ambas formas.
| Value | Identity |
|---|---|
Sql Password |
Un inicio de sesión SQL con User ID y Password. |
Active Directory Default |
Una cadena de fuentes de credenciales, como variables de entorno, identidad gestionada y acceso a herramientas de desarrolladores. |
Active Directory Managed Identity |
Una identidad controlada. Configurado User ID al ID del cliente de una identidad asignada por el usuario.
Active Directory MSI es un alias. |
Active Directory Workload Identity |
Una identidad de carga de trabajo Kubernetes. |
Active Directory Service Principal |
Una aplicación con User ID se establece al ID del cliente y Password se establece al secreto del cliente. |
Active Directory Interactive |
Un usuario que inicia sesión mediante un prompt del navegador. |
Active Directory Device Code Flow |
Un usuario que inicia sesión en otro dispositivo con un código. |
Active Directory Integrated |
El usuario de Windows iniciado sesión, mediante una configuración federada o de inicio de sesión único sin interrupciones. |
Active Directory Password |
Un nombre de usuario y una contraseña. Este método está obsoleto. Usa otro método. |
Los métodos Microsoft Entra ID necesitan el Microsoft.Data.SqlClient.Extensions.Azure paquete. Para configuración y ejemplos, véase la autenticación Microsoft Entra ID y la autenticación de SQL Server.
Opciones de cifrado
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Encrypt |
Ninguno | Encrypt |
Mandatory |
Strict utiliza TDS 8.0 y siempre valida el certificado del servidor.
Mandatory, true, o yes cifra la conexión.
Optional, false, o no cifra toda la conexión solo cuando el servidor lo requiere. Cuando el servidor soporta cifrado pero no lo requiere, solo se cifra el paquete de inicio de sesión. |
Trust Server Certificate |
TrustServerCertificate |
TrustServerCertificate |
false |
true Salta la validación del certificado del servidor. Se omite cuando Encrypt=Strict. No lo use en producción. |
Host Name In Certificate |
HostNameInCertificate |
HostNameInCertificate |
Vacía | Un nombre de respaldo para la validación de certificados. SqlClient primero valida el certificado contra el nombre del servidor en Data Source. Solo comprueba Host Name In Certificate cuando ese nombre no coincide, así que un valor incorrecto no causa un fallo cuando el nombre del servidor ya coincide. No fija un certificado. Para requerir un certificado específico, utiliza Server Certificate. No cambia el destino de la red ni evita la cadena de confianza ni las comprobaciones de caducidad. Déjalo sin configurar cuando el nombre del servidor ya coincide con el certificado. |
Server Certificate |
ServerCertificate |
ServerCertificate |
Vacía | La ruta de un archivo PEM, DER o CER que debe coincidir exactamente con el certificado del servidor. El conductor comprueba la coincidencia solo cuando valida el certificado, así que úsalo con Encrypt=Mandatory o Encrypt=Strict y Trust Server Certificate=false. Un archivo coincidente reemplaza la validación de la cadena y del nombre de host, así que funciona con un certificado autofirmado en el que el cliente no confía. |
Para las reglas completas de validación, véase Cifrado y validación de certificados.
Opciones siempre cifradas
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Column Encryption Setting |
ColumnEncryption |
ColumnEncryptionSetting |
Disabled |
Enabled activa Siempre Cifrado para la conexión. |
Attestation Protocol |
Ninguno | AttestationProtocol |
No especificado | El protocolo de atestación del enclave: AAS, HGS, o None. |
Enclave Attestation Url |
Ninguno | EnclaveAttestationUrl |
Vacía | El endpoint del servicio de atestación para Always Encrypted con enclaves seguros. |
Opciones de red
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Multi Subnet Failover |
MultiSubnetFailover |
MultiSubnetFailover |
false |
Prueba todas las direcciones IP a las que se resuelve el nombre del servidor en paralelo. Úsalo para escuchadores de grupos de disponibilidad y instancias de clúster de conmutación por conmutación a través de TCP. No soportado con espejamiento de base de datos. Las instancias nombradas dependen de la implementación de la red. La implementación gestionada, que .NET utiliza en Linux y macOS y en Windows cuando la red gestionada está activada, soporta una instancia nombrada y envía la solicitud del navegador SQL Server a todas las direcciones resueltas en paralelo. La implementación nativa en Windows puede rechazar una instancia nombrada con el error SNI 48. |
IP Address Preference |
IPAddressPreference |
IPAddressPreference |
IPv4First |
El orden para intentar resolver responde: IPv4First, IPv6First, o UsePlatformDefault. |
Packet Size |
PacketSize |
PacketSize |
8000 |
El tamaño del paquete del Flujo de Datos Tabulares (TDS) en bytes, desde 512 hasta 32.768. |
Un interruptor AppContext a nivel de proceso puede cambiar el Multi Subnet Failover valor predeterminado a true. Para más información, consulta los interruptores AppContext en SqlClient.
Opciones de tiempo de espera
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Connect Timeout |
Connection Timeout, ConnectTimeout, Timeout |
ConnectTimeout |
15 |
Segundos para esperar una conexión, incluyendo la espera para una conexión agrupada cuando la piscina está llena.
0 espera indefinidamente. |
Command Timeout |
Ninguno | CommandTimeout |
30 |
El valor predeterminado CommandTimeout en segundos para los comandos creados en la conexión.
0 espera indefinidamente. |
Connect Timeout no limita la ejecución de consultas.
Command Timeout No limita el inicio de sesión ni la espera para una conexión agrupada. Pasa a CancellationToken llamadas asíncronas para que el llamante pueda dejar de esperar antes de que expire cualquiera de los tiempos muertos.
Opciones de recuperación de conexión
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Connect Retry Count |
ConnectRetryCount |
ConnectRetryCount |
1 |
Vuelve a intentar tras un fallo transitorio cualificado durante la primera apertura y al restaurar una conexión de ralentí rota.
0 Apaga los reintentos. Los valores válidos son de 0 a 255. |
Connect Retry Interval |
ConnectRetryInterval |
ConnectRetryInterval |
10 |
Segundos entre intentos de nuevo. Los valores válidos son del 1 al 60. |
Cuando Connect Retry Count es 1, que es el valor predeterminado, el controlador lo utiliza 2 para endpoints de Azure SQL y 5 para endpoints de pools SQL serverless de Azure Synapse Analytics cuando restaura una conexión inactiva rota. La primera apertura usa el valor como establecido, por lo que el valor por defecto permite un reintento en cada extremo. El controlador utiliza cualquier otro valor establecido en ambos casos.
Estas palabras clave no intentan repetir un comando que falla mientras está en ejecución. Para saltarse el reintento incorporado para una apertura, llama a una Open sobrecarga con OpenWithoutRetry. Para políticas personalizadas, véase Lógica de reintento configurable. Vuelve a intentar un comando solo cuando sea seguro repetirlo.
Opciones de agrupación
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Pooling |
Ninguno | Pooling |
true |
Reutiliza conexiones físicas para emparejar cadenas de conexión. |
Min Pool Size |
Ninguno | MinPoolSize |
0 |
Conexiones físicas que la piscina mantiene abiertas después de crearse. |
Max Pool Size |
Ninguno | MaxPoolSize |
100 |
Las conexiones físicas más fuertes en una sola piscina. Debe ser 1 como mínimo. |
Connection Idle Timeout |
Ninguno | IdleTimeout |
300 |
Segundos en los que una conexión puede permanecer inactiva en la piscina antes de que la piscina la cierre.
0 Apaga la expiración en ralentí. Se aplica solo cuando el Switch.Microsoft.Data.SqlClient.UseLegacyIdleTimeoutBehavior cambio AppContext es false. De forma predeterminada, es true. |
Load Balance Timeout |
Connection Lifetime |
LoadBalanceTimeout |
0 |
La edad máxima en segundos de una conexión volvía a la piscina. Una conexión antigua está cerrada.
0 Apaga el límite. |
Pool Blocking Period |
PoolBlockingPeriod |
PoolBlockingPeriod |
Auto |
Ya sea que el pool regenere un fallo de inicio de sesión en caché durante un corto periodo: Auto, AlwaysBlock, o NeverBlock.
Autodesactiva el bloqueo para los endpoints de Azure SQL. |
Cada cadena de conexión distinta tiene su propio pool. Para claves de pool, limpieza y tiempo de inactividad, consulta pooling de conexiones de SQL Server.
Opciones de transacción y sesión
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Enlist |
Ninguno | Enlist |
true |
Activa la conexión en la transacción ambiental System.Transactions cuando se abre. |
Transaction Binding |
Ninguno | TransactionBinding |
Implicit Unbind |
Implicit Unbind Desconecta la conexión cuando termina la transacción de soldados rasos.
Explicit Unbind Lo mantiene conectado hasta que se cierra la conexión o el código lo desconecte. |
Multiple Active Result Sets |
MultipleActiveResultSets |
MultipleActiveResultSets |
false |
Permite más de un lote activo en una sola conexión. |
Type System Version |
Ninguno | TypeSystemVersion |
Latest |
El tipo de servidor que expone el controlador. Acepta Latest, SQL Server 2012, SQL Server 2008, y SQL Server 2005. Déjalo en Latest. |
Replication |
Ninguno | Replication |
false |
Identifica la conexión como una conexión de replicación. |
Opciones solo del framework .NET
Estas palabras clave solo se aceptan en .NET Framework. En .NET, el constructor lanza NotSupportedException y SqlConnection lanza ArgumentException.
| Keyword | Aliases | Propiedad del constructor | Predeterminado | Description |
|---|---|---|---|---|
Network Library |
Net, Network |
NetworkLibrary |
Vacía | La biblioteca de la red. No lo combines con el prefijo o tcp:np: en Data Source, porque la conexión falla. En .NET, prefijo Data Source con tcp: o np: en su lugar. |
Connection Reset |
Ninguno | ConnectionReset |
true |
Obsolete. |
Transparent Network IP Resolution |
TransparentNetworkIPResolution |
TransparentNetworkIPResolution |
true |
Obsolete. |
Palabras clave no soportadas
| Keyword | Result |
|---|---|
Context Connection |
Context Connection=true produce InvalidOperationException. Microsoft. Data.SqlClient no soporta conexiones contextuales SQL CLR. |
Asynchronous Processing |
Lanza ArgumentException: Keyword not supported. Los métodos asíncronos funcionan sin ella. |
Driver, Provider |
Lanza ArgumentException: Keyword not supported. Estas palabras clave pertenecen a ODBC y OLE DB. |
Reglas de validación
SqlConnectionStringBuilder Rechaza palabras clave desconocidas y muchos valores inválidos cuando los configuras.
SqlConnectionrealiza más comprobaciones cuando configuras su cadena de conexión, incluyendo valores individuales que acepta el constructor y combinaciones de palabras clave. Una cadena que el constructor acepta aún puede fallar cuando creas la conexión.
El constructor y la conexión rechazan estos valores con ArgumentException:
-
Connect Timeout,Command Timeout,Load Balance Timeout,Connection Idle Timeout, oMin Pool Sizemenos que 0. -
Max Pool Sizemenos de 1. -
Packet Sizefuera de 512 a 32.768. -
Connect Retry CountFuera de 0 a 255. -
Connect Retry IntervalFuera del 1 al 60. - Una palabra clave que no aparece en este artículo.
SqlConnection también rechaza estos valores con ArgumentException, aunque el constructor los acepte:
-
Type System Versionaparte deLatest,SQL Server 2012,SQL Server 2008, oSQL Server 2005. -
Transaction Bindingaparte deImplicit UnbindoExplicit Unbind. - Un valor mayor que el límite TDS para
Application Name,Current Language,Data Source,Failover Partner,Initial Catalog,PasswordUser ID, ,Workstation ID, oAttachDBFilename.
SqlConnection también rechaza estas combinaciones con ArgumentException:
-
Min Pool Sizemayor queMax Pool Size. -
Failover PartnersinInitial Catalog. -
Failover PartnerconMulti Subnet Failover=true,User Instance=trueoApplication Intent=ReadOnly. -
AuthenticationconIntegrated Security=true. -
PasswordconActive Directory Integrated,Active Directory Interactive,Active Directory Managed Identity,Active Directory MSI,Active Directory Default, , oActive Directory Workload Identity. -
User IDoPasswordconActive Directory Device Code Flow.
Cambios en la opción de revisión
Antes de cambiar una opción en producción:
- Registra la cadena de conexión actual, la versión del driver, el tipo de endpoint y el problema que estás resolviendo.
- Cambia una opción a la vez.
- Prueba del establecimiento de conexiones, la autenticación, la validación de certificados, la agrupación de conexiones, la conmutación por error, la cancelación y la ejecución de consultas.
- Mide la latencia de conexión, las esperas en el pool y los números de error.
- Confirma la configuración en cada instancia desplegada.
Un cambio en la cadena de conexión crea un nuevo pool. Durante un despliegue por etapas, los pools antiguos y nuevos existen al mismo tiempo, por lo que el número total de conexiones físicas al servidor puede aumentar.