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.
Las opciones de conexión de Microsoft.Data.SqlClient controlan cómo el controlador establece, identifica, enruta, reintenta y administra la agrupación de conexiones. Establézcalas en una cadena de conexión o mediante las propiedades correspondientes SqlConnectionStringBuilder.
Para la autenticación de Microsoft Entra ID, véase autenticación Microsoft Entra ID. Para la configuración de TLS, consulta Cifrado y validación de certificados.
Establecer opciones con SqlConnectionStringBuilder
Usa el builder en lugar de concatenar fragmentos de cadena de conexión:
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,
};
El código utiliza nombres de propiedades de los constructores. Las tablas usan las formas habituales de escribir las cadenas de conexión. El conductor también acepta alias documentados.
Opciones de tiempo de espera
| Keyword | Predeterminado | Comportamiento | Versión |
|---|---|---|---|
Connect Timeout |
15 segundos | Limita el tiempo para establecer una conexión. Cuando el pool está en Max Pool Size, también limita el tiempo de espera para una conexión utilizable del pool.
Connection Timeout y Timeout son alias. |
Todas versiones de Microsoft. Data.SqlClient |
Command Timeout |
30 segundos | Establece el tiempo de espera por defecto para los comandos asociados a la conexión. Ponlo CommandTimeout en un comando cuando una operación necesita un límite diferente. Un valor de 0 no tiene límite de tiempo y puede dejar el trabajo esperando indefinidamente. |
Microsoft. Data.SqlClient 2.1 y versiones posteriores |
Los tiempos de espera de conexión y de comandos se aplican a operaciones diferentes.
Connect Timeout no limita la ejecución de consultas.
Command Timeout No limita la autenticación ni la espera para una conexión agrupada.
A CancellationToken es independiente de ambas configuraciones. Pásalo a OpenAsync, a la ejecución de comandos y a los métodos de lectura para que el llamante deje de esperar antes de que expire el tiempo de espera.
Opciones de identidad de carga de trabajo y enrutamiento
| Keyword | Predeterminado | Comportamiento | Versión |
|---|---|---|---|
Application Name |
Nombre definido por el proveedor | Identifica la carga de trabajo en las sesiones de SQL Server, auditorías y diagnósticos. Utiliza un nombre estable y de baja cardinalidad para cada carga de trabajo desplegada. | Todas versiones de Microsoft. Data.SqlClient |
Application Intent |
ReadWrite |
ReadOnly solicita enrutamiento de intención de lectura cuando el destino y el grupo de disponibilidad están configurados para ello. No hace que las sentencias SQL sean de solo lectura. |
Todas versiones de Microsoft. Data.SqlClient |
Application Intent=ReadOnly Normalmente se empareja con un oyente de grupo de disponibilidad o un punto final de servicio que soporta enrutamiento de lectura. Consulta Alta disponibilidad y recuperación ante desastres.
Opciones de red y paquetes
| Keyword | Predeterminado | Comportamiento | Versión |
|---|---|---|---|
Packet Size |
8.000 bytes | Establece el tamaño del paquete de red Tabular Data Stream (TDS). Los valores soportados van de 512 a 32.768 bytes. Mantén el valor por defecto a menos que las mediciones de carga de trabajo y la configuración del servidor justifiquen un cambio. | Todas versiones de Microsoft. Data.SqlClient |
MultiSubnetFailover |
false |
Utiliza intentos paralelos de conexión TCP a las direcciones IP devueltas para un extremo con varias direcciones. Configúralo en true para puntos de conexión de Azure SQL, clientes de escucha de grupos de disponibilidad e instancias de clúster de conmutación por error a las que se accede a través de TCP. |
Todas versiones de Microsoft. Data.SqlClient |
MultiSubnetFailover=true no está soportado con instancias nombradas, protocolos no TCP, espejamiento de bases de datos ni endpoints configurados con más de 64 direcciones IP. Es seguro para un punto final TCP de una sola IP.
Microsoft.Data.SqlClient 7.0 también dispone de un conmutador de AppContext para todo el proceso que puede hacer que todas las conexiones se comporten como si MultiSubnetFailover=true. La cadena de conexión por defecto se mantiene false cuando ese switch no está activado. Consulta los interruptores AppContext en SqlClient.
Opciones de agrupación
| Keyword | Predeterminado | Comportamiento | Versión |
|---|---|---|---|
Pooling |
true |
Reutiliza conexiones físicas para emparejar configuraciones de conexión. Desactívala solo para diagnóstico o para una carga de trabajo medida que no pueda agruparse de forma segura. | Todas versiones de Microsoft. Data.SqlClient |
Min Pool Size |
0 |
Mantiene al menos esas conexiones físicas en una piscina después de que se cree la piscina. Un valor positivo puede mantener abiertas las sesiones de la base de datos hasta que termine el pool o proceso. | Todas versiones de Microsoft. Data.SqlClient |
Max Pool Size |
100 |
Limita las conexiones físicas en una sola piscina. Las solicitudes esperan hasta Connect Timeout que la piscina está llena. |
Todas versiones de Microsoft. Data.SqlClient |
Load Balance Timeout |
0 segundos |
Descarta una conexión cuando regresa al pool si su edad supera este valor.
Connection Lifetime es un alias.
0 Desactiva la eliminación por edad. |
Todas versiones de Microsoft. Data.SqlClient |
Pool Blocking Period |
Auto |
Controla si el pool relanza temporalmente un fallo de inicio de sesión en caché.
Autodesactiva el periodo de bloqueo para los endpoints reconocidos de Azure SQL y lo habilita para otros endpoints. |
Todas versiones de Microsoft. Data.SqlClient |
Enlist |
true |
Automáticamente registra una conexión abierta en la transacción ambiental System.Transactions . |
Todas versiones de Microsoft. Data.SqlClient |
La configuración del pool se aplica a cada pool distinto, no a todo el proceso o servidor de base de datos. Antes de aumentar Max Pool Size, confirma que las conexiones y lectores se eliminan rápidamente y que la base de datos puede aceptar el total resultante en cada instancia de aplicación.
Para claves de pool, comportamiento de tokens, periodos de bloqueo, limpieza y diagnóstico, consulta SQL Server connection pooling.
Opciones de recuperación de conexión
| Keyword | Predeterminado | Comportamiento | Versión |
|---|---|---|---|
Connect Retry Count |
1 |
Establece el recuento de reintentos para fallos transitorios cualificados durante la conexión inicial y para restaurar una conexión inactiva rota. El valor por defecto efectivo es 2 para endpoints reconocidos de Azure SQL y 5 para endpoints reconocidos de Azure Synapse y on-demand.
0 desactiva estos reintentos. |
Todas versiones de Microsoft. Data.SqlClient |
Connect Retry Interval |
10 segundos | Establece el retardo antes de los intentos posteriores de conexión inicial o recuperación en reposo. Los valores válidos son de 1 a 60 segundos. | Todas versiones de Microsoft. Data.SqlClient |
El primer intento durante la recuperación de conexión es inmediato.
Connect Retry Interval se aplica antes de los intentos posteriores. Para saltarse el reintento abierto inicial incorporado para una operación, se utiliza una sobrecarga abierta con OpenWithoutRetry.
Estas palabras clave no intentan repetir un comando que falla mientras está en ejecución. Utiliza lógica de reintento configurable para una política personalizada de apertura o comando. Vuelva a intentar los comandos solo cuando sea seguro repetir sus efectos.
Opciones de identidad del servidor y certificados
Estas opciones satisfacen requisitos específicos de nomenclatura de certificados o de Kerberos. No sustituyen la autenticación normal ni la validación de certificados.
| Keyword | Predeterminado | Comportamiento | Versión |
|---|---|---|---|
Host Name In Certificate |
Nombre del host del servidor | Proporciona el Nombre Común (CN) o Nombre Alternativo de Sujeto (SAN) esperado cuando la conexión utiliza un alias DNS que difiere del certificado. | Microsoft. Data.SqlClient 5.0 y versiones posteriores |
Server Certificate |
Vacía | Suministra un archivo PEM, DER o CER que debe coincidir exactamente con el certificado del servidor cuando Encrypt=Mandatory o Encrypt=Strict. |
Microsoft. Data.SqlClient 5.1 y versiones posteriores |
Server SPN |
Derivado del nombre del servidor | Anula el Nombre Principal del Servicio (SPN) utilizado para la autenticación integrada al servidor principal. Configúrelo solo cuando la nomenclatura de Kerberos implementada requiera un SPN explícito. | Microsoft. Data.SqlClient 5.0 y versiones posteriores |
Failover Partner SPN |
Derivado del socio de conmutación por error | Anula el SPN para un socio de conmutación por error de espejo de base de datos. El reflejo de bases de datos está obsoleto. Usa grupos de disponibilidad para nuevos despliegues. | Microsoft. Data.SqlClient 5.0 y versiones posteriores |
Host Name In Certificate cambia el nombre utilizado para la coincidencia de certificados. No confía en un emisor no confiable.
Server Certificate ancla un archivo de certificado específico y requiere una actualización de la aplicación cuando ese certificado se renueva.
Las invalidaciones incorrectas del SPN pueden impedir la autenticación de Kerberos o debilitar la comprobación de identidad prevista. Corrija la configuración de DNS y el registro de SPN en lugar de establecer anulaciones cuando sea posible.
Mantén las cuerdas de conexión pequeñas. Añade una opción solo cuando puedas indicar qué comportamiento cambia y cómo la carga de trabajo verifica ese comportamiento.
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 observado.
- Cambia un comportamiento 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 conexiones duras, esperas en pool, latencia de conexión y números de error.
- Confirma la configuración en cada instancia desplegada.
Las cadenas de conexión forman parte de la clave del pool. Un despliegue por etapas puede crear temporalmente tanto pools antiguos como nuevos, lo que aumenta el número total de conexiones físicas a bases de datos.