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


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

Обновлен: November 2007

Каждый поставщик данных платформы .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;

ms254500.alert_note(ru-ru,VS.90).gifПримечание.

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

Строки соединения SqlClient

Синтаксис для строки соединения 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"
ms254500.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

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

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

Data Source=MySqlServer\MSSQL1;"

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

Изменения в ключевых словах Type System Version

Функции, доступные клиентскому приложению, зависят от версии SQL Server и уровня совместимости базы данных. Ключевые слова Type System Version в SqlConnection.ConnectionString используются для указания представления на стороне клиента типов SQL Server. Явное указание с помощью ключевых слов type system version версии СУБД, для которой было написано клиентское приложение, позволяет избежать потенциальных проблем, которые могут привести к сбою приложения при использовании другой версии 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;
ms254500.alert_note(ru-ru,VS.90).gifПримечание.

Версию системы типов нельзя задать для внутрипроцессного выполнения кода среды 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;" 
ms254500.alert_note(ru-ru,VS.90).gifПримечание.

Если ключевому слову 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=*****;
ms254500.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Сведения о соединении 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;"
ms254500.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Указывать расположение системной базы данных в строке соединения не требуется, если база данных 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)