Share via


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.

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. 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.

Cadenas de conexión 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)"  

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"  

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 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 Type System Version

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.

Concatenar y adjuntar 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.

Usar 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.

Habilitar el 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 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 El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.
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.
No (valor predeterminado) Omitido El cifrado se produce siempre, pero puede que se utilice un certificado de servidor autofirmado.
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.
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 cadena 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. Un archivo UDL no se puede proteger 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.

Utilizar 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.

Conectarse 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 cadena 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;"

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  

Utilizar DataDirectory para conectarse a Visual FoxPro

El siguiente ejemplo de cadena de conexión OdbcConnection muestra cómo se utiliza DataDirectory para conectarse a un archivo de Microsoft Visual FoxPro.

"Driver={Microsoft Visual FoxPro Driver};  
SourceDB=|DataDirectory|\MyData.DBC;SourceType=DBC;"  

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.

Vea también