Sintaxis de cadenas de conexión
Cada proveedor de datos .NET Framework tiene un objeto Connection
que hereda de la clase DbConnection, así como una propiedad ConnectionString específica del proveedor. La sintaxis de la cadena de conexión específica de cada proveedor se indica en su propiedad ConnectionString
. En la tabla siguiente se muestran los cuatro proveedores de datos que se incluyen en .NET Framework.
proveedor de datos de .NET Framework (.NET Framework data provider) | Descripción |
---|---|
System.Data.SqlClient | Proporciona acceso de datos para Microsoft SQL Server. Para obtener más información acerca de la sintaxis de la cadena de conexión, vea ConnectionString. |
System.Data.OleDb | Proporciona acceso de datos para orígenes de datos que se exponen mediante OLE DB. Para obtener más información acerca de la sintaxis de la cadena de conexión, vea ConnectionString. |
System.Data.Odbc | Proporciona acceso de datos para orígenes de datos que se exponen mediante ODBC. Para obtener más información acerca de la sintaxis de la cadena de conexión, vea ConnectionString. |
System.Data.OracleClient | Proporciona acceso de datos para Oracle versión 8.1.7 o superior. Para obtener más información acerca de la sintaxis de la cadena de conexión, vea ConnectionString. |
Generadores de cadenas de conexión
ADO.NET 2.0 presentó los siguientes compiladores de cadenas de conexión para los proveedores de datos .NET Framework.
- SqlConnectionStringBuilder
- OleDbConnectionStringBuilder
- OdbcConnectionStringBuilder
- OracleConnectionStringBuilder
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
La autenticación de Windows (en ocasiones denominada seguridad integrada) se puede usar para conectarse a orígenes de datos que sean compatibles. La sintaxis utilizada en la cadena de conexión varía dependiendo del proveedor. En la siguiente tabla se muestra la sintaxis de autenticación de Windows utilizada con los proveedores de datos .NET Framework.
Proveedor | Sintaxis |
---|---|
SqlClient |
Integrated Security=true; -- or -- Integrated Security=SSPI; |
OleDb |
Integrated Security=SSPI; |
Odbc |
Trusted_Connection=yes; |
OracleClient |
Integrated Security=yes; |
Nota:
Integrated Security=true
produce una excepción cuando se usa con el proveedor OleDb
.
Importante
Microsoft recomienda usar el flujo de autenticación más seguro disponible. Si se conecta a Azure SQL, el método de autenticación recomendado es Identidades administradas para recursos de Azure.
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. Si necesita conectarse a una versión anterior de SQL Server, debe usar el proveedor de datos .NET Framework para OleDb (System.Data.OleDb). La mayoría de las palabras clave de cadenas de conexión se corresponden también con las propiedades de 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"
"Persist Security Info=False;Integrated Security=SSPI;
database=AdventureWorks;server=(local)"
"Persist Security Info=False;Trusted_Connection=True;
database=AdventureWorks;server=(local)"
Importante
Microsoft recomienda usar el flujo de autenticación más seguro disponible. Si se conecta a Azure SQL, el método de autenticación recomendado es Identidades administradas para recursos de Azure.
Autenticación de SQL Server con SqlClient
Es preferible utilizar la autenticación de Windows para conectarse a SQL Server (de forma local). 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"
Cuando se conecte a Azure SQL Database o a Azure SQL Data Warehouse y proporcione un inicio de sesión con el formato user@servername
, asegúrese de que el valor servername
del inicio de sesión 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 indica ambos Integrated Security=true
, así como un nombre de usuario y una contraseña, se omitirán el nombre de usuario y la contraseña y se utilizará la autenticación de Windows.
Importante
Microsoft recomienda usar el flujo de autenticación más seguro disponible. Si se conecta a Azure SQL, el método de autenticación recomendado es Identidades administradas para recursos de Azure.
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 SqlConnection.ConnectionString, vea Type System Version
.
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
solo es válida al conectar a una instancia de SQL Server con un certificado válido. Cuando TrustServerCertificate
se establece en true
, la capa de transporte utilizará SSL para cifrar el canal y evitar recorrer la cadena de certificados para validar la confianza.
"TrustServerCertificate=true;"
Nota
Si TrustServerCertificate
se establece en true
y se activa el cifrado, se utilizará el nivel de cifrado especificado en el servidor aunque Encrypt
esté establecido en false
en la cadena de conexión. De lo contrario, se producirá un error en la conexión.
Habilitación del cifrado
Si desea habilitar el cifrado porque no se ha incluido un certificado en el servidor, deben estar habilitadas las opciones Forzar cifrado de protocolo y Confiar en certificado de servidor en el Administrador de configuración de SQL Server. En ese caso, el cifrado utilizará un certificado de servidor autofirmado sin validación si 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 proporcionado un certificado de servidor y no se haya configurado Forzar cifrado de protocolo para el cliente. Sin embargo, si en la configuración del cliente no está habilitado TrustServerCertificate
, seguirá siendo necesario un certificado de servidor.
En la siguiente tabla se describen todos los casos.
Cliente configurado con Forzar cifrado de protocolo | Cliente configurado con Confiar en certificado de servidor | Cadena de conexión/atributo Cifrar/Utilizar cifrado para los datos | Cadena de conexión/atributo Confiar en certificado de servidor | Resultado |
---|---|---|---|---|
No | N/D | No (valor predeterminado) | Omitido | No se produce el cifrado. |
No | N/D | Sí | No (valor predeterminado) | 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. |
No | N/D | Sí | Sí | El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado. |
Sí | No | Omitido | Omitido | 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í | Sí | No (valor predeterminado) | Omitido | El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado. |
Sí | Sí | Sí | No (valor predeterminado) | 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í | Sí | Sí | Sí | El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado. |
Para obtener más información, vea Usar el cifrado sin validación.
Cadenas de conexión OleDb
La propiedad ConnectionString de un objeto OleDbConnection permite obtener o establecer una cadena de conexión para un origen de datos OLE DB, como Microsoft Access. Asimismo puede crear una cadena de conexión de OleDb
en tiempo de ejecución mediante la clase OleDbConnectionStringBuilder.
Sintaxis de cadenas de conexión OleDb
Para una cadena de conexión OleDbConnection, debe proporcionar un nombre de proveedor. La siguiente cadena de conexión conecta a una base de datos Microsoft Access mediante el proveedor Jet. Tenga en cuenta que las palabras clave User ID
y Password
son opcionales si la base de datos no está protegida (opción predeterminada).
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\Northwind.mdb;User ID=Admin;Password=;
Si la base de datos Jet está protegida mediante la seguridad de nivel de usuario, debe proporcionar la ubicación del archivo de información de grupo de trabajo (.mdw). Este archivo se usa para validar las credenciales presentadas en la cadena de conexión.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Northwind.mdb;Jet OLEDB:System Database=d:\NorthwindSystem.mdw;User ID=*****;Password=*****;
Importante
Se puede proporcionar información de conexión para un objeto OleDbConnection en un archivo UDL (Universal Data Link), pero conviene evitarlo. Los archivos UDL no están cifrados y exponen la información de cadena de conexión en texto sin cifrar. No se puede proteger un archivo UDL mediante .NET Framework, ya que se trata de un recurso basado en un archivo externo a la aplicación. Los archivos UDL no son compatibles con SqlClient.
Importante
Microsoft recomienda usar el flujo de autenticación más seguro disponible. Si se conecta a Azure SQL, el método de autenticación recomendado es Identidades administradas para recursos de Azure.
Usar DataDirectory para conectarse a Access/Jet
DataDirectory
no es exclusivo de SqlClient
. También se puede utilizar con los proveedores de datos de .NET System.Data.OleDb y System.Data.Odbc. La siguiente cadena OleDbConnection de ejemplo muestra la sintaxis necesaria para conectarse a la base de datos Northwind.mdb situada en la carpeta app_data de la aplicación. La base de datos del sistema (System.mdw) también está almacenada en esa ubicación.
"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=|DataDirectory|\Northwind.mdb;
Jet OLEDB:System Database=|DataDirectory|\System.mdw;"
Importante
No es necesario especificar la ubicación de la base de datos del sistema en la cadena de conexión si la base de datos Access/Jet no está protegida. La seguridad está desactivada de forma predeterminada y todos los usuarios se conectan como el usuario Admin integrado, con una contraseña en blanco. Aun cuando la seguridad a nivel de usuario esté correctamente implementada, una base de datos Jet sigue siendo vulnerable a los ataques. Por eso no se recomienda almacenar información delicada en una base de datos Access/Jet a causa de la fragilidad inherente a su esquema de seguridad basado en archivos.
Conectar a Excel
Para conectarse a un libro de Excel se utiliza el proveedor Microsoft Jet. En la siguiente cadena de conexión, la palabra clave Extended Properties
establece propiedades que son específicas de Excel. "HDR=Yes;" indica que la primera fila contiene nombres de columna, no datos, e "IMEX=1;" indica al controlador que siempre lea las columnas de datos "entremezclados" como texto.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""
Tenga en cuenta que el carácter de comilla doble necesario en Extended Properties
también debe ir incluido entre comillas dobles.
Sintaxis de cadenas de conexión del proveedor de formas de datos
Utilice las palabras clave Provider
y Data Provider
cuando use el proveedor de formas de datos de Microsoft. En el siguiente ejemplo se utiliza el proveedor de formas para conectarse a una instancia local de SQL Server.
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;"
Importante
Microsoft recomienda usar el flujo de autenticación más seguro disponible. Si se conecta a Azure SQL, el método de autenticación recomendado es Identidades administradas para recursos de Azure.
Cadenas de conexión Odbc
La propiedad ConnectionString de una OdbcConnection permite obtener o establecer una cadena de conexión para un origen de datos OLE DB. Las cadenas de conexión Odbc también son compatibles con OdbcConnectionStringBuilder.
En la siguiente cadena de conexión se utiliza el Controlador de texto de Microsoft.
Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\bin
Cadenas de conexión Oracle
La propiedad ConnectionString de una OracleConnection permite obtener o establecer una cadena de conexión para un origen de datos OLE DB. Las cadenas de conexión Oracle también son compatibles con OracleConnectionStringBuilder.
Data Source=Oracle9i;User ID=*****;Password=*****;
Para obtener más información acerca de la sintaxis de cadena de conexión ODBC, vea ConnectionString.
Importante
Microsoft recomienda usar el flujo de autenticación más seguro disponible. Si se conecta a Azure SQL, el método de autenticación recomendado es Identidades administradas para recursos de Azure.