Поделиться через


Синтаксис строки подключения (ADO.NET)

Каждый поставщик данных платформы .NET Framework имеет объект Connection, наследующий из DbConnection, а также из свойства ConnectionString, зависящего от поставщика.Конкретный синтаксис строки подключения для каждого поставщика приведен в его свойстве ConnectionString.В следующей таблице представлен список четырех поставщиков данных, поставляемых в составе платформы .NET Framework.

Поставщик данных .NET Framework

Описание

System.Data.SqlClient

Предоставляет доступ к данным для Microsoft SQL Server 7.0 или более поздних версий.Дополнительные сведения о синтаксисе строки подключения см. в разделе ConnectionString.

System.Data.OleDb

Предоставляет доступ к данным источников данных OLE DB.Дополнительные сведения о синтаксисе строки подключения см. в разделе ConnectionString.

System.Data.Odbc

Предоставляет доступ к данным источников данных ODBC.Дополнительные сведения о синтаксисе строки подключения см. в разделе ConnectionString.

System.Data.OracleClient

Предоставляет доступ к данным Oracle версии 8.1.7 или старше.Дополнительные сведения о синтаксисе строки подключения см. в разделе ConnectionString.

Построители строк подключения

В ADO.NET 2.0 появились указанные ниже построители строк подключения для поставщиков данных .NET Framework.

Построители строк подключения позволяют создавать во время выполнения синтаксически правильные строки подключения, поэтому в коде не требуется вручную объединять значения строк подключения.Дополнительные сведения см. в разделе Построители строк соединения (ADO.NET).

Проверка подлинности Windows

Для подключения к источникам данных рекомендуется использовать проверку подлинности Windows (которую также называют встроенной безопасностью), если эти источники ее поддерживают.Синтаксис строки подключения зависит от поставщика.В следующей таблице показан синтаксис проверки подлинности Windows, который используется с поставщиками данных платформы .NET Framework.

Поставщик

Синтаксис

SqlClient

Integrated Security=true;

-- or --

Integrated Security=SSPI;

OleDb

Integrated Security=SSPI;

Odbc

Trusted_Connection=yes;

OracleClient

Integrated Security=yes;

ПримечаниеПримечание

Значение Integrated Security=true вызывает исключение при работе с поставщиком OleDb.

Строки подключения SqlClient

Синтаксис для строки подключения SqlConnection документирован в свойстве SqlConnection.ConnectionString.Свойство ConnectionString используется для возврата или задания строки подключения для базы данных SQL Server 7.0 или более поздней версии.Если необходимо подключиться к более ранней версии SQL Server, следует использовать поставщик данных .NET Framework для OleDb (System.Data.OleDb).Наиболее распространенные ключевые слова строк подключения также соответствуют свойствам SqlConnectionStringBuilder.

Все следующие формы синтаксиса используют для соединения с базой данных AdventureWorks на локальном сервере проверку подлинности Windows.

"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)"

Имена входа SQL Server

Для соединения с SQL Server предпочтительно использовать проверку подлинности Windows.Однако если требуется проверка подлинности SQL Server, то имя пользователя и пароль указываются с помощью приведенного ниже синтаксиса.В этом примере символы звездочки представляют допустимое имя пользователя и пароль.

"Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer"
Примечание о безопасностиПримечание по безопасности

Значением по умолчанию для ключевого слова PersistSecurity Info является false.Значение true или yes позволяет получить из строки соединения конфиденциальные данные (в том числе идентификатор пользователя и пароль) после открытия соединения.Если ключевое слово PersistSecurity Info равно false, то ненадежный источник не сможет получить доступ к конфиденциальным данным строки соединения.

Чтобы подключиться к именованному экземпляру SQL Server, используйте синтаксис имя_сервера\имя_экземпляра.

Data Source=MySqlServer\MSSQL1;"

Кроме того, в свойстве DataSource объекта SqlConnectionStringBuilder можно задать имя экземпляра при построении строки подключения.Свойство DataSource объекта SqlConnection доступно только для чтения.

ПримечаниеПримечание

Проверка подлинности Windows имеет приоритет над именами входа SQL Server.Если указать значение Integrated Security=true, а также ввести имя пользователя и пароль, то имя пользователя и пароль не будут учитываться и будет применяться проверка подлинности Windows.

Изменения версий системы типов

Функции, доступные клиентскому приложению, зависят от версии SQL Server и уровня совместимости базы данных.Ключевые слова Type System Version в SqlConnection.ConnectionString используются для указания представления на стороне клиента типов SQL Server.Явное указание системы типов версии СУБД, для которой было написано клиентское приложение, позволяет избежать потенциальных проблем, которые могут привести к сбою приложения при использовании другой версии SQL Server.Например, если указано «SQL Server 2000», то столбцы определяемого пользователем типа представляются в виде массива byte[].Если указано «SQL Server 2005», то они представляются в виде управляемых типов.

Возможные значения Type System Version описаны в приведенной ниже таблице.

Значение

Описание

Latest

Использует последнюю версию из тех, которые может обработать данная пара клиент-сервер.Используемая версия автоматически будет увеличиваться по мере обновления клиентских и серверных компонентов.Это значение по умолчанию в ADO.NET.

SQL Server 2000

Использует систему типов SQL Server 2000.

SQL Server 2005

Использует систему типов SQL Server 2005.

SQL Server 2008

Используется система типов SQL Server 2008.Значения типа Datetime обрабатываются исходя из номера версии системы типов и языка по умолчанию, указанных на сервере.

В целях совместимости с функциями, представленными в SQL Server 2008, можно явно указать аргумент Type System Version в строке подключения, используя одну из указанных ниже строк.

Type System Version= SQL Server 2008;
Type System Version=Latest;
ПримечаниеПримечание

Версию системы типов нельзя задать для внутрипроцессного выполнения кода среды CLR на сервере SQL Server.Дополнительные сведения см. в разделе Интеграция SQL Server со средой CLR (ADO.NET).

Подключение и присоединение к пользовательским экземплярам SQL Server Express

Пользовательские экземпляры являются новой возможностью, доступной только в SQL Server 2005 Express Edition.Они дают пользователям под учетной записью с минимальными правами возможность присоединить и запустить базу данных SQL Server без прав администратора.Пользовательский экземпляр выполняется с учетными данными пользователя Windows, а не службы.

Дополнительные сведения о работе с пользовательскими экземплярами см. в разделе Соединение с пользовательскими экземплярами SQL Server Express (ADO.NET).

Использование ключевого слова TrustServerCertificate

Ключевое слово TrustServerCertificate — новое в ADO.NET 2.0, оно применяется только при соединении с экземпляром SQL Server 2005 с допустимым сертификатом.Если ключевому слову TrustServerCertificate присвоено значение true, то транспортный уровень будет использовать протокол SSL для шифрования канала и не пойдет по цепочке сертификатов для проверки доверия.

"TrustServerCertificate=true;" 
ПримечаниеПримечание

Если ключевому слову TrustServerCertificate присвоено значение true и включено шифрование, то будет использоваться уровень шифрования, заданный на сервере, даже если в строке подключения Encrypt задано значение false.В противном случае соединение не будет установлено.

Включение шифрования

Чтобы включить шифрование, когда на сервере не представлен сертификат, в диспетчере конфигурации SQL Server необходимо установить параметры Принудительное шифрование протокола и Доверять сертификату сервера.В этом случае шифрование будет использовать самозаверяющий сертификат сервера, не проверяя наличия подтверждаемого сертификата сервера.

Настройки приложения не могут снизить установленный на SQL Server уровень безопасности, но при необходимости могут повысить его.Приложение может затребовать шифрование, присвоив ключевым словам TrustServerCertificate и Encrypt значение true, гарантируя тем самым, что шифрование будет выполняться, даже если не представлен сертификат сервера, а на клиенте не настроен параметр Принудительное шифрование протокола.Но если на клиенте не установлен параметр TrustServerCertificate, то сертификат сервера, тем не менее, потребуется.

В следующей таблице перечислены все случаи.

Параметр «Принудительное шифрование протокола» на клиенте

Параметр «Доверять сертификату сервера» на клиенте

Строка или атрибут «Шифровать/Использовать шифрование для подключения к данным»

Строка подключения или атрибут «Доверять сертификату сервера»

Результат

Нет

Неприменимо

Нет (по умолчанию)

Не учитывается

Шифрование отсутствует.

Нет

Неприменимо

Да

Нет (по умолчанию)

Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно.

Нет

н/д

Да

Да

Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно.

Да

Нет

Не учитывается

Пропущено

Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно.

Да

Да

Нет (по умолчанию)

Пропущено

Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно.

Да

Да

Да

Нет (по умолчанию)

Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно.

Да

Да

Да

Да

Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно.

Дополнительные сведения см. в разделе Использование шифрования без проверки электронной документации по SQL Server.

Строки подключения OleDb

Свойство ConnectionString класса OleDbConnection позволяет получить или задать строку подключения для источника данных OLE DB, например для Microsoft Access или SQL Server 6.5 или более поздней версии.Строку подключения OleDb также можно создать во время выполнения с помощью класса OleDbConnectionStringBuilder.

Синтаксис строки подключения OleDb

В строке подключения OleDbConnection необходимо указать имя поставщика.Следующие строки подключения подключают к базе данных Microsoft Access, использующей поставщик Jet.Обратите внимание, что ключевые слова UserID и Password необязательны, если база данных не защищена (по умолчанию).

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

Если база данных Jet защищена на уровне пользователя, необходимо указать местоположение файла сведений рабочей группы (MDW-файла).Файл сведений рабочей группы используется для проверки учетных данных, указанных в строке подключения.

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

Для SQL Server 6.5 и более ранних версий используйте для поставщика ключевое слово sqloledb.

Provider=sqloledb;Data Source=MySqlServer;Initial Catalog=pubs;User Id=*****;Password=*****;
Примечание о безопасностиПримечание по безопасности

Сведения о соединении OleDbConnection можно указать в UDL-файле, однако этого следует избегать.UDL-файлы не подвергаются шифрованию, и строки соединения хранятся в них в виде простого текста.Так как UDL-файл представляет собой внешний файловый ресурс для приложения, его нельзя защитить средствами .NET Framework.UDL-файлы не поддерживаются для SqlClient.

Подключение к Access/Jet с помощью строки замены DataDirectory

Строка замены DataDirectory поддерживается не только клиентом SqlClient.Ее можно также использовать с поставщиками данных .NET для System.Data.OleDb и System.Data.Odbc.В следующем образце строки OleDbConnection приведен синтаксис для подключения к базе данных Northwind.mdb, расположенной в папке приложения app_data.В этой папке также хранится системная база данных (System.mdw).

"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=|DataDirectory|\Northwind.mdb;
Jet OLEDB:System Database=|DataDirectory|\System.mdw;"
Примечание о безопасностиПримечание по безопасности

Указывать расположение системной базы данных в строке подключения не требуется, если база данных Access/Jet не защищена.Защита снята по умолчанию, все пользователи соединяются как встроенный пользователь Admin с пустым паролем.База данных Jet остается уязвимой для атаки, даже если правильно реализована безопасность на уровне пользователя.Поэтому в базе данных Access/Jet не рекомендуется хранить конфиденциальные данные, поскольку схема безопасности на основе файловой системы неизбежно обладает определенной уязвимостью.

Соединение с Excel

Поставщик Microsoft Jet используется для подключения с книгой Excel.В следующей строке подключения ключевое слово Extended Properties задает специфические свойства Excel. "«HDR=Yes;» указывает, что первая строка содержит имена столбцов, а не данные, а «IMEX=1;» дает указания драйверу всегда считывать «смешанные» столбцы данных в виде текста.

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

Обратите внимание, что двойные кавычки, необходимые для ключевого слова Extended Properties, также должны заключаться в двойные кавычки.

Синтаксис строки подключения с поставщиком Data Shape

При соединении с поставщиком Microsoft Data Shape используются оба ключевых слова: Provider и Data Provider.В следующем примере поставщик Data Shape используется для подключения к экземпляру SQL Server.

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

Строки подключения ODBC

Свойство ConnectionString класса OdbcConnection позволяет получить или задать строку подключения для источника данных OLE DB.Строки подключения ODBC также поддерживаются построителем OdbcConnectionStringBuilder.

Следующая строка подключения использует текстовый драйвер Microsoft.

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

Использование строки замены DataDirectory для соединения с Visual FoxPro

Следующий образец строки подключения OdbcConnection демонстрирует использование DataDirectory для соединения с файлом Microsoft Visual FoxPro.

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

Строки подключения Oracle

Свойство ConnectionString класса OracleConnection позволяет получить или задать строку подключения для источника данных OLE DB.Строки подключения Oracle также поддерживаются построителем OracleConnectionStringBuilder.

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

Дополнительные сведения о синтаксисе строки подключения ODBC см. в разделе ConnectionString.

См. также

Другие ресурсы

Строки соединения (ADO.NET)

Соединение с источником данных (ADO.NET)