Синтаксис строки подключения
Область применения: платформа .NET Framework .NET Standard
В 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=<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
значение, и сертификат сервера не проверяется. - Начиная с версии 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
значение или Strict
ServerCertificate
может использоваться для указания пути в файловой системе к файлу сертификата для сопоставления с сертификатом 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