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

Область применения: .NET Framework .NET .NET Standard

Скачать ADO.NET

В Microsoft.Data.SqlClient есть объект Connection, который наследуется от DbConnection, а также свойство ConnectionString для конкретного поставщика. Синтаксис строки подключения для конкретного поставщика SqlClient описывается в соответствующем свойстве ConnectionString. Дополнительные сведения о синтаксисе строки подключения см. в разделе ConnectionString.

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

Поставщик данных Microsoft SqlClient для SQL Server предоставляет описанный ниже построитель строк подключения.

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

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

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

Поставщик Синтаксис
SqlClient Integrated Security=true;

-- or --

Integrated Security=SSPI;

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

Синтаксис для строки подключения SqlConnection документирован в свойстве SqlConnection.ConnectionString. Свойство ConnectionString используется для возврата или задания строки подключения для базы данных SQL Server. Кроме того, ключевые слова строки подключения сопоставляются со свойствами в SqlConnectionStringBuilder.

Внимание

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

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

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

"Persist Security Info=False;Integrated Security=true;  
    Initial Catalog=AdventureWorks;Server=MSSQL1;Encrypt=True;"  
"Persist Security Info=False;Integrated Security=SSPI;  
    database=AdventureWorks;server=(local);Encrypt=True;"  
"Persist Security Info=False;Trusted_Connection=True;  
    database=AdventureWorks;server=(local);Encrypt=True;"  

Проверка подлинности SQL Server с использованием SqlClient.

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

"Persist Security Info=False;User ID=<user name>;Password=<password>;Initial Catalog=AdventureWorks;Server=MySqlServer;Encrypt=True;"  

Если при подключении к Базе данных SQL Azure или Azure Synapse Analytics вы указываете имя пользователя в формате user@servername, убедитесь, что значение servername в имени пользователя соответствует значению, указанному для Server=.

Примечание.

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

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

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

"Data Source=MySqlServer\MSSQL1;"  

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

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

Ключевое слово Type System Version в SqlConnection.ConnectionString указывает клиентское представление типов SQL Server. Дополнительные сведения о ключевом слове Type System Version см. в разделе SqlConnection.ConnectionString.

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

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

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

Использование TrustServerCertificate

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

  • В версиях до Microsoft.Data.SqlClient 2.0 этот параметр игнорируется, если для Encrypt задано значение False и сертификат сервера не проверяется.
  • В Microsoft.Data.SqlClient начиная с версии 2.0, даже если Encrypt задано значение False, этот параметр определяет, будет ли выполняться проверка сертификата, если сервер принудительно требует шифрование.
  • Начиная с версии 5.0 Microsoft.Data.SqlClient, этот параметр игнорируется, если для Encrypt задано значение Strict. Сертификат сервера всегда проверяется в режиме Strict.

Дополнительные сведения см. в разделе Шифрование и проверка сертификатов.

"TrustServerCertificate=true;"

HostNameInCertificate

Начиная с версии 5.0 Microsoft.Data.SqlClient HostNameInCertificate — это новый вариант подключения. Проверка сертификата сервера гарантирует, что имя общего имени (CN) или альтернативное имя субъекта (SAN) в сертификате совпадает с именем сервера, к которому подключено. В некоторых случаях, например для псевдонимов DNS, имя сервера может не совпадать с CN или SAN. Значение HostNameInCertificate можно использовать для указания другого ожидаемого CN или SAN в сертификате сервера.

"HostNameInCertificate=myserver.example.com"

Сертификат сервера

Начиная с версии 5.1 Microsoft.Data.SqlClient, ServerCertificate является новым вариантом подключения. Значение ServerCertificate по умолчанию параметра подключения является пустой строкой. Если для Encrypt установлено значение Mandatory или Strict, можно использовать ServerCertificate для указания пути к файлу сертификата в файловой системе для сопоставления с TLS-сертификатом сервера. Чтобы сертификат был действительным, указанный сертификат должен в точности совпадать. Допустимые форматы сертификатов: PEM, DER и CER. Приведем пример:

"Data Source=...;Encrypt=Strict;ServerCertificate=C:\certificates\server.cer"

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

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

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

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

Зашифровать строку подключения/атрибут Атрибут строки подключения «Доверять сертификату сервера» Результат
Нет/необязательно Пропущено Шифрование отсутствует.
Да/обязательно Нет Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
Да/обязательно Да Шифрование производится всегда, однако при этом может использоваться самозаверяющий сертификат сервера.
Строгое1 Пропущено Шифрование происходит всегда и в его процессе должен использоваться подтверждаемый сертификат сервера, в противном случае попытка подключения завершается сбоем.

1 Строгое шифрование доступно только начиная с Microsoft.Data.SqlClient версии 5.0.

Дополнительные сведения, включая поведение в предыдущих версиях, см. в разделе "Шифрование и проверка сертификатов".