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

Применимо: платформа .NET Framework .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.

Provider Синтаксис
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=*****;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 значение, и сертификат сервера не проверяется.
  • Начиная с версии 2.0 Microsoft.Data.SqlClient, даже если 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"

ServerCertificate

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

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

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

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

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

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

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

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

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

См. также

Строки подключения
Шифрование и проверка сертификатов
подключение к источнику данных;
Microsoft ADO.NET для SQL Server