Compartir a través de


Sintaxis de cadenas de conexión

Se aplica a: .NET Framework .NET .NET Standard

Descargar ADO.NET

Microsoft.Data.SqlClient tiene un objeto Connection que hereda de DbConnection y una propiedad ConnectionString específica del proveedor. La sintaxis de la cadena de conexión específica del proveedor SqlClient se documenta en su propiedad ConnectionString. Para obtener más información acerca de la sintaxis de la cadena de conexión, vea ConnectionString.

Generadores de cadenas de conexión

El proveedor de datos SqlClient de Microsoft para SQL Server incluyó por primera vez el siguiente generador de cadenas de conexión.

Los compiladores de cadenas de conexión permiten crear cadenas de conexión sintácticamente válidas en tiempo de ejecución. Por tanto, el usuario no tiene que concatenar manualmente los valores de las cadenas de conexión del código. Para obtener más información, vea Generadores de cadenas de conexión.

Autenticación de Windows

Recomendamos usar la autenticación de Windows (en ocasiones denominada seguridad integrada) para conectarse a orígenes de datos que sean compatibles. En la tabla siguiente se muestra la sintaxis de autenticación de Windows que se usa con el proveedor de datos SqlClient de Microsoft para SQL Server.

Proveedor Syntax
SqlClient Integrated Security=true;

-- or --

Integrated Security=SSPI;

Cadenas de conexión de SqlClient

La sintaxis de una cadena de conexión de SqlConnection se documenta en la propiedad SqlConnection.ConnectionString. Puede usar la propiedad ConnectionString para obtener o establecer una cadena de conexión para una base de datos de SQL Server. Las palabras clave de la cadena de conexión también se asignan a las propiedades en SqlConnectionStringBuilder.

Importante

La configuración predeterminada de la palabra clave Persist Security Info es false. Si se establece en true o yes, permite obtener información de seguridad confidencial de la conexión, incluidos el identificador de usuario y la contraseña, una vez abierta la conexión. Mantenga el valor Persist Security Info establecido en false para garantizar que los orígenes que no sean de confianza no puedan tener acceso a información confidencial de la cadena de conexión.

Autenticación de Windows con SqlClient

En cada una de las siguientes formas de sintaxis se utiliza autenticación de Windows para conectarse a la base de datos AdventureWorks en un servidor local.

"Persist Security Info=False;Integrated Security=true;  
    Initial Catalog=AdventureWorks;Server=MSSQL1;Encrypt=True;"  
"Persist Security Info=False;Integrated Security=SSPI;  
    database=AdventureWorks;server=(local);Encrypt=True;"  
"Persist Security Info=False;Trusted_Connection=True;  
    database=AdventureWorks;server=(local);Encrypt=True;"  

Autenticación de SQL Server con SqlClient

Es preferible utilizar la autenticación de Windows para conectarse a SQL Server. No obstante, si se requiere autenticación de SQL Server, deberá utilizar la siguiente sintaxis para especificar un nombre de usuario y una contraseña. En este ejemplo, los asteriscos representan un nombre de usuario y una contraseña válidos.

"Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer;Encrypt=True;"  

Cuando se conecte a Azure SQL Database o a Azure Synapse Analytics y proporcione un nombre de usuario con el formato user@servername, asegúrese de que el valor servername del nombre de usuario coincida con el valor proporcionado para Server=.

Nota

La autenticación de Windows tiene prioridad sobre los inicios de sesión de SQL Server. Si especifica Integrated Security=true junto con un nombre de usuario y una contraseña, se ignorarán el nombre de usuario y la contraseña, y se usará la autenticación de Windows.

Conexión a una instancia con nombre de SQL Server

Para conectarse a una instancia con nombre de SQL Server, utilice la sintaxis nombre de servidor\nombre de instancia.

"Data Source=MySqlServer\MSSQL1;"  

A la hora de crear una cadena de conexión, también puede establecer la propiedad DataSource del SqlConnectionStringBuilder en el nombre de instancia. La propiedad DataSource de un objeto SqlConnection es de solo lectura.

Cambios en la versión de sistema de tipo

La palabra clave Type System Version en un objeto SqlConnection.ConnectionString especifica la representación del lado cliente de los tipos de SQL Server. Para obtener más información sobre la palabra clave Type System Version, vea SqlConnection.ConnectionString.

Conexión y asociación a instancias de usuario de SQL Server Express

Las instancias de usuario son una característica de SQL Server Express. Permiten que un usuario que ejecuta una cuenta de Windows local y con privilegios mínimos adjunte y ejecute una base de datos de SQL Server sin necesidad de tener privilegios administrativos. Una instancia de usuario se ejecuta con las credenciales de Windows del usuario, no como un servicio.

Para obtener más información sobre cómo trabajar con instancias de usuario, vea Instancias de usuario de SQL Server Express.

Use TrustServerCertificate

La palabra clave TrustServerCertificate se usa al conectarse a una instancia de SQL Server. Si TrustServerCertificate se establece en true, la capa de transporte usa SSL para cifrar el canal y omitir el paso de la cadena de certificados para validar la confianza.

  • En versiones anteriores a Microsoft.Data.SqlClient 2.0, esta configuración se omite cuando Encrypt está establecido en False y el certificado de servidor no se valida.
  • A partir de la versión 2.0 de Microsoft.Data.SqlClient, incluso si Encrypt se establece en False, la configuración controla si la validación del certificado se realiza cuando el servidor fuerza el cifrado.
  • A partir de la versión 5.0 de Microsoft.Data.SqlClient, esta configuración se omite si Encrypt se establece en Strict. El certificado de servidor siempre se valida en modo Strict.

Para obtener más información, vea Cifrado y validación de certificados.

"TrustServerCertificate=true;"

HostNameInCertificate

A partir de la versión 5.0 de Microsoft.Data.SqlClient, HostNameInCertificate es una nueva opción de conexión. La validación de certificados de servidor garantiza que el nombre común (CN) o el nombre alternativo de sujeto (SAN) del certificado coincida con el nombre del servidor al que se está conectando. En algunos casos, como los alias DNS, es posible que el nombre del servidor no coincida con el CN o SAN. El valor HostNameInCertificate se puede usar para especificar un CN o SAN esperado diferente en el certificado de servidor.

"HostNameInCertificate=myserver.example.com"

ServerCertificate

A partir de la versión 5.1 de Microsoft.Data.SqlClient, ServerCertificate es una nueva opción de conexión. El valor predeterminado de la configuración de conexión de ServerCertificate es una cadena vacía. Cuando se establece Encrypt en Mandatory o Strict, se puede usar ServerCertificate para especificar una ruta de acceso en el sistema de archivos a un archivo de certificado que coincida con el certificado TLS del servidor. El certificado especificado debe ser una coincidencia exacta para que sea válido. Los formatos de certificado permitidos son PEM, DER y CER. Este es un ejemplo:

"Data Source=...;Encrypt=Strict;ServerCertificate=C:\certificates\server.cer"

Habilitación del cifrado

Para habilitar el cifrado cuando no se ha aprovisionado un certificado en el servidor, se debe establecer la propiedad de conexión Certificado de servidor de confianza en True. En ese caso, el cifrado utiliza un certificado de servidor autofirmado sin validación, ya que no se ha proporcionado ningún certificado comprobable en el servidor.

La configuración de las aplicaciones no puede reducir el nivel de seguridad configurado en SQL Server, sino que en todo caso puede reforzarlo. Una aplicación puede solicitar cifrado estableciendo las palabras clave TrustServerCertificate y Encrypt en true, con lo que se garantiza el cifrado aunque no se haya aprovisionado un certificado de servidor. Pero si en la configuración cliente no está habilitado TrustServerCertificate, seguirá siendo necesario un certificado de servidor.

En la siguiente tabla se describen todos los casos.

Cifrado de atributo o cadena de conexión Cadena de conexión/atributo Confiar en certificado de servidor Resultado
No/Opcional Omitido No se produce el cifrado.
Sí/Obligatorio No El cifrado solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión.
Sí/Obligatorio El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.
Estricto1 Omitido El cifrado se produce siempre y se debe usar un certificado de servidor verificable; de lo contrario, se produce un error en el intento de conexión.

1 El cifrado estricto solo está disponible a partir de la versión 5.0 de Microsoft.Data.SqlClient.

Para más información, incluido el comportamiento en versiones anteriores, consulte Cifrado y validación de certificados.

Vea también

Cadenas de conexión
Cifrado y validación de certificados
Conexión a un origen de datos
Microsoft ADO.NET para SQL Server