Sintaxe da cadeia de conexão

Cada provedor de dados .NET Framework tem um objeto de Connection que herda de DbConnection bem como de uma propriedade ConnectionString específica do provedor. A sintaxe específica da cadeia de conexão para cada provedor está documentada em sua propriedade ConnectionString. A tabela a seguir lista os quatro provedores de dados que estão incluídos no .NET Framework.

Provedor de dados .NET Framework Descrição
System.Data.SqlClient Fornece acesso a dados para o Microsoft SQL Server. Para obter mais informações sobre a sintaxe da cadeia de conexão, consulte ConnectionString.
System.Data.OleDb Fornece acesso a dados para as fontes de dados expostas usando OLE DB. Para obter mais informações sobre a sintaxe da cadeia de conexão, consulte ConnectionString.
System.Data.Odbc Fornece acesso a dados para as fontes de dados expostas usando ODBC. Para obter mais informações sobre a sintaxe da cadeia de conexão, consulte ConnectionString.
System.Data.OracleClient Fornece acesso a dados para Oracle versão 8.1.7 ou posterior. Para obter mais informações sobre a sintaxe da cadeia de conexão, consulte ConnectionString.

Construtores de cadeia de conexão

O ADO.NET 2.0 introduziu os seguintes construtores de cadeia de conexão para provedores de dados .NET Framework.

Os construtores de cadeia de conexão permitem que você construa cadeias de conexão sintaticamente válidas em tempo de execução, para que você não tenha que manualmente concatenar os valores de cadeia de conexão no seu código. Para obter mais informações, confira Construtores de cadeias de conexão.

Autenticação do Windows

Recomendamos o uso da Autenticação do Windows (às vezes chamada de segurança integrada) para se conectar a fontes de dados que dão suporte a ela. A sintaxe empregada na cadeia de conexão varia de acordo com o provedor. A tabela a seguir mostra a sintaxe de Autenticação do Windows usada com os provedores de dados .NET Framework.

Provedor Syntax
SqlClient Integrated Security=true;

-- or --

Integrated Security=SSPI;
OleDb Integrated Security=SSPI;
Odbc Trusted_Connection=yes;
OracleClient Integrated Security=yes;

Observação

O Integrated Security=true gera uma exceção quando usado com o provedor OleDb.

Cadeias de conexão do SqlClient

A sintaxe para uma cadeia de conexão SqlConnection está documentada na propriedade SqlConnection.ConnectionString. Você pode usar a propriedade ConnectionString para obter ou definir uma cadeia de conexão para um banco de dados do SQL Server. Se você precisar de conexão a uma versão anterior do SQL Server, você deve usar o provedor de dados .NET Framework para OleDb (System.Data.OleDb). A maioria das palavras-chave de cadeia de conexão também mapeiam para as propriedades no SqlConnectionStringBuilder.

Importante

A configuração padrão para a palavra-chave Persist Security Info é false. Configurá-lo como true ou yes permite informações confidenciais de segurança, incluindo a identificação de usuário e a senha, para serem obtidas da conexão depois que ela tiver sido aberta. Mantenha Persist Security Info definida como false para garantir que uma fonte não confiável não tenha acesso a informações confidenciais da cadeia de conexão.

Autenticação do Windows com SqlClient

Cada uma das formas de sintaxe a seguir usa a Autenticação do Windows para se conectar ao banco de dados AdventureWorks em um 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)"  

Autenticação do SQL Server com SqlClient

A Autenticação do Windows é preferencial para se conectar ao SQL Server. No entanto, se a Autenticação do SQL Server for necessária, use a seguinte sintaxe para especificar um nome de usuário e uma senha. Nesse exemplo, os asteriscos são usados para representar um nome de usuário e uma senha válidos.

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

Quando você se conectar ao Banco de Dados SQL do Azure ou ao SQL Data Warehouse do Azure e fornecer um logon no formato user@servername, verifique se o valor servername no logon corresponde ao valor fornecido para Server=.

Observação

A autenticação do Windows tem precedência sobre logons do SQL Server. Se você especificar Integrated Security=true assim como um nome de usuário e uma senha, o nome de usuário e a senha serão ignorados e a autenticação do Windows será usada.

Conectar-se a uma instância nomeada do SQL Server

Para se conectar a uma instância nomeada do SQL Server, use a sintaxe server name\instance name.

"Data Source=MySqlServer\\MSSQL1;"  

Você também pode definir a propriedade DataSource de SqlConnectionStringBuilder para o nome da instância ao criar uma cadeia de conexão. A propriedade DataSource de um objeto SqlConnection é somente leitura.

Alterações de versão do sistema de tipos

A palavra-chave Type System Version em um SqlConnection.ConnectionString especifica a representação do lado do cliente de tipos do SQL Server. Consulte SqlConnection.ConnectionString para obter mais informações sobre a palavra-chave Type System Version.

Conectando e anexando a instâncias de usuário do SQL Server Express

As instâncias de usuário são um recurso no SQL Server Express. Elas permitem que um usuário que esteja executando uma conta local do Windows com menos privilégios anexe e execute um banco de dados do SQL Server sem exigir privilégios administrativos. Uma instância de usuário é executada com as credenciais do Windows do usuário, não como um serviço.

Para obter mais informações sobre como trabalhar com instâncias de usuário, confira Instâncias de usuário do SQL Server Express.

Usando TrustServerCertificate

A palavra-chave TrustServerCertificate é válida somente ao se conectar a uma instância do SQL Server com um certificado válido. Quando TrustServerCertificate estiver definido como true, a camada de transporte usará SSL para criptografar o canal e não precisar passar pela verificação da cadeia do certificado para validar a confiança.

"TrustServerCertificate=true;"

Observação

Se TrustServerCertificate estiver definido como true e a criptografia estiver ativada, o nível de criptografia especificado no servidor será usado mesmo que Encrypt esteja definido como false na cadeia de conexão. A conexão falhará se isso for feito de outra maneira.

Habilitando a criptografia

Para habilitar a criptografia quando um certificado não tiver sido provisionado no servidor, as opções Forçar Criptografia de Protocolo e Confiar no Certificado do Servidor devem ser definidas no SQL Server Configuration Manager. Neste caso, a criptografia usará um certificado do servidor autoassinado sem validação, se nenhum certificado verificável tiver sido provisionado no servidor.

As configurações do aplicativo não podem reduzir o nível de segurança configurado no SQL Server, mas podem opcionalmente reforçá-lo. Um aplicativo pode solicitar a criptografia definindo as palavras-chave TrustServerCertificate e Encrypt como true, garantindo que a criptografia ocorra mesmo quando um certificado do servidor não tiver sido provisionado e Forçar Criptografia de Protocolo não estiver configurado para o cliente. No entanto, se TrustServerCertificate não estiver ativado na configuração do cliente, um certificado do servidor provisionado ainda será necessário.

A tabela a seguir descreve todos os casos.

Configuração do cliente Forçar Criptografia de Protocolo Configuração do cliente Confiar em Certificado do Servidor Criptografar/Usar criptografia para a cadeia de conexão/atributo de dados Cadeia de conexão/atributo do Certificado do Servidor de Confiança Result
Não N/D Não (padrão) Ignored Não ocorre criptografia.
Não N/D Sim Não (padrão) A criptografia só ocorrerá se houver um certificado de servidor verificável; caso contrário, a tentativa de conexão falhará.
Não N/D Sim Sim A criptografia sempre ocorre, mas pode usar um certificado do servidor autoassinado.
Sim Não Ignored Ignored A criptografia só ocorrerá se houver um certificado do servidor verificável; caso contrário, a tentativa de conexão falhará.
Sim Sim Não (padrão) Ignored A criptografia sempre ocorre, mas pode usar um certificado do servidor autoassinado.
Sim Sim Sim Não (padrão) A criptografia só ocorrerá se houver um certificado do servidor verificável; caso contrário, a tentativa de conexão falhará.
Sim Sim Sim Sim A criptografia sempre ocorre, mas pode usar um certificado do servidor autoassinado.

Para obter mais informações, confira Usando criptografia sem validação.

Cadeias de conexão do OleDb

A propriedade ConnectionString de um OleDbConnection permite que você obtenha ou defina uma cadeia de conexão para uma fonte de dados do OLE DB, como o Microsoft Access. Você também pode criar uma cadeia de conexão OleDb em tempo de execução usando a classe OleDbConnectionStringBuilder.

Sintaxe da cadeia de conexão OleDb

Você deve especificar um nome de provedor para uma cadeia de conexão OleDbConnection. A seguinte cadeia de conexão conecta-se a um banco de dados do Microsoft Access usando o provedor Jet. Observe que as palavras-chave User ID e Password serão opcionais se o banco de dados for inseguro (o padrão).

Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\Northwind.mdb;User ID=Admin;Password=;

Se o banco de dados Jet estiver protegido usando a segurança de nível de usuário, você deverá fornecer o local do arquivo de informações do grupo de trabalho (.mdw). O arquivo de informações do grupo de trabalho é usado para validar as credenciais apresentadas na cadeia de conexão.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Northwind.mdb;Jet OLEDB:System Database=d:\NorthwindSystem.mdw;User ID=*****;Password=*****;  

Importante

É possível fornecer informações de conexão para um OleDbConnection em um arquivo UDL (Universal Data Link); no entanto, você deve evitar fazer isso. Os arquivos UDL não são criptografados e expõem as informações da cadeia de conexão em texto não criptografado. Como um arquivo UDL é um recurso externo com base em arquivo para o seu aplicativo, ele não poderá ser protegido usando o .NET Framework. Não há suporte para arquivos UDL para SqlClient.

Usando DataDirectory para conectar-se ao Access/Jet

DataDirectory não é exclusivo para SqlClient. Ele também pode ser usado com os provedores de dados System.Data.OleDb e System.Data.Odbc do .NET. A cadeia de caracteres de exemplo OleDbConnection a seguir demonstra a sintaxe necessária para se conectar ao Northwind.mdb localizado na pasta app_data do aplicativo. O banco de dados do sistema (System.mdw) também é armazenado nesse local.

"Provider=Microsoft.Jet.OLEDB.4.0;  
Data Source=|DataDirectory|\Northwind.mdb;  
Jet OLEDB:System Database=|DataDirectory|\System.mdw;"  

Importante

Especificar o local do banco de dados do sistema na cadeia de conexão não será necessário se o banco de dados Access/Jet for inseguro. A segurança é desativada por padrão, com todos os usuários que se conectam como o usuário Admin interno com uma senha em branco. Mesmo quando a segurança em nível de usuário estiver implementada corretamente, um banco de dados Jet permanecerá vulnerável ao ataque. Portanto, armazenar informações confidenciais em um banco de dados Access/Jet não é recomendado devido à fraqueza inerente de seu esquema de segurança baseado em arquivo.

Conectando ao Excel

O provedor Microsoft Jet é usado para conectar-se a uma pasta de trabalho do Excel. Na cadeia de conexão a seguir, a palavra-chave de Extended Properties define as propriedades que são específicas do Excel. "HDR=Yes;" indica que a primeira linha contém nomes de coluna, não dados, e "IMEX=1;" informa o driver para ler sempre colunas de dados "HDR=Yes;" como texto.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""  

Observe que o caractere de aspas duplas necessário para as Extended Properties também deve estar entre aspas duplas.

Sintaxe da cadeia de conexão do provedor de forma de dados

Use as palavras-chave Provider e Data Provider ao usar o provedor Microsoft Data Shape. O exemplo a seguir usa o provedor Shape para se conectar a uma instância local do SQL Server.

"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;"

Cadeias de conexão do Odbc

A propriedade ConnectionString de um OdbcConnection permite obter ou definir uma cadeia de conexão para uma fonte de dados do OLE DB. As cadeias de conexão de Odbc também têm suporte pelo OdbcConnectionStringBuilder.

A cadeia de conexão a seguir usa o Microsoft Text Driver.

Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\bin  

Usando DataDirectory para conectar-se ao Visual FoxPro

O exemplo a seguir da cadeia de conexão OdbcConnection demonstra o uso do DataDirectory para se conectar a um arquivo do Microsoft Visual FoxPro.

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

Cadeias de conexão do Oracle

A propriedade ConnectionString de um OracleConnection permite obter ou definir uma cadeia de conexão para uma fonte de dados do OLE DB. As cadeias de conexão de Oracle também têm suporte pelo OracleConnectionStringBuilder.

Data Source=Oracle9i;User ID=*****;Password=*****;  

Para obter mais informações sobre a sintaxe da cadeia de conexão ODBC, consulte ConnectionString.

Confira também