Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Microsoft. Параметры подключения Data.SqlClient управляют, как драйвер устанавливает, идентифицирует, маршрутизирует, повторяет и объединяет соединение. Задайте их в строке подключения или через соответствующие SqlConnectionStringBuilderсвойства.
Для аутентификации Microsoft Entra ID см. аутентификация Microsoft Entra ID. Для настроек TLS см. раздел Шифрование и проверка сертификатов.
Настройка опций с помощью SqlConnectionStringBuilder
Используйте построитель вместо объединения фрагментов строки подключения:
var builder = new SqlConnectionStringBuilder
{
DataSource = "tcp:sql.example.com,1433",
InitialCatalog = "Orders",
IntegratedSecurity = true,
Encrypt = SqlConnectionEncryptOption.Mandatory,
ApplicationName = "Orders.Worker",
ConnectTimeout = 30,
ConnectRetryCount = 3,
ConnectRetryInterval = 10,
MultiSubnetFailover = true,
};
В кодексе используются названия объектов застройщиков. В таблицах приведены общепринятые варианты написания строки подключения. Водитель также принимает задокументированные псевдонимы.
Варианты тайм-аута
| Keyword | По умолчанию | Behavior | Версия |
|---|---|---|---|
Connect Timeout |
15 секунд | Ограничивает время установления связи. Когда пул находится на уровне Max Pool Size, это также ограничивает время ожидания доступного для использования соединения из пула.
Connection Timeout и Timeout являются псевдонимами. |
Все версии Microsoft. Data.SqlClient |
Command Timeout |
30 секунд | Устанавливает тайм-аут по умолчанию для команд, связанных с соединением. Установите CommandTimeout для команды, если для какой-либо операции требуется другой лимит. Значение 0 не ограничено по времени и может оставлять задачу в состоянии ожидания на неопределённый срок. |
Microsoft. Data.SqlClient 2.1 и более поздние версии |
Тайм-ауты соединений и команд измеряют разные работы.
Connect Timeout не ограничивает выполнение запросов.
Command Timeout не ограничивает аутентификацию или ожидание соединения из пула.
CancellationToken не зависит ни от одного из этих параметров. Передайте его методам OpenAsyncвыполнения команд и методам считывания, чтобы вызывающий мог прекратить ожидание до истечения тайм-аута.
Идентификация рабочей нагрузки и опции маршрутизации
| Keyword | По умолчанию | Behavior | Версия |
|---|---|---|---|
Application Name |
Имя, определённое провайдером | Определяет нагрузку в сессиях SQL Server, аудите и диагностике. Для каждой развернутой рабочей нагрузки используйте одно стабильное имя с низкой кардинальностью. | Все версии Microsoft. Data.SqlClient |
Application Intent |
ReadWrite |
ReadOnly запрашивает маршрутизацию подключений с намерением только чтения, если для этого настроены целевой объект и группа доступности. Это не делает SQL-операторы доступными только для чтения. |
Все версии Microsoft. Data.SqlClient |
Application Intent=ReadOnly Обычно работает в паре с слушателем группы доступности или с конечной точкой сервиса, поддерживающей маршрутизацию чтения. См. Высокая доступность и восстановление после катастроф.
Сетевые и пакетные опции
| Keyword | По умолчанию | Behavior | Версия |
|---|---|---|---|
Packet Size |
8 000 байт | Устанавливает размер сетевого пакета Tabular Data Stream (TDS). Поддерживаемые значения — от 512 до 32 768 байт. Сохраняйте стандартную версию, если только измерения нагрузки и конфигурация сервера не оправдывают изменения. | Все версии Microsoft. Data.SqlClient |
MultiSubnetFailover |
false |
Использует параллельные попытки подключения через TCP к IP-адресам, возвращаемым для многоадресной конечной точки. Установите значение true для конечных точек Azure SQL, прослушивателей групп доступности и экземпляров отказоустойчивого кластера, к которым осуществляется доступ по TCP. |
Все версии Microsoft. Data.SqlClient |
MultiSubnetFailover=true не поддерживается для именованных экземпляров, протоколов, отличных от TCP, зеркалирования базы данных или конечных точек, настроенных с использованием более 64 IP-адресов. Это безопасно для TCP-конечной точки с одним IP-адресом.
Microsoft. Data.SqlClient 7.0 также имеет переключатель AppContext для всего процесса, который может заставить любое соединение вести себя так, будто MultiSubnetFailover=true. По умолчанию строка подключения остаётся false при неактивном коммутаторе. См. переключатели AppContext в SqlClient.
Варианты объединения
| Keyword | По умолчанию | Behavior | Версия |
|---|---|---|---|
Pooling |
true |
Повторное использование физических соединений для согласования конфигураций соединений. Отключайте его только для диагностики или измеряемой нагрузки, которая не может безопасно объединиться. | Все версии Microsoft. Data.SqlClient |
Min Pool Size |
0 |
Сохраняет как минимум столько физических соединений в пуле после создания пула. Положительное значение может сохранять сессии базы данных открытыми до окончания пула или процесса. | Все версии Microsoft. Data.SqlClient |
Max Pool Size |
100 |
Ограничивает физические соединения в одном пуле. Запросы ждут до Connect Timeout заполнения пула. |
Все версии Microsoft. Data.SqlClient |
Load Balance Timeout |
0 секунды |
Удаляет соединение при возврате в пул, если его возраст превышает это значение.
Connection Lifetime — это псевдоним.
0 Отключает удаление по возрасту. |
Все версии Microsoft. Data.SqlClient |
Pool Blocking Period |
Auto |
Определяет, будет ли пул временно повторно генерировать кэшированное исключение сбоя входа.
Autoотключает период блокировки для распознанных Azure SQL-конечных точек и включает его для других конечных точек. |
Все версии Microsoft. Data.SqlClient |
Enlist |
true |
Автоматически подключает открытое соединение к текущей System.Transactions транзакции. |
Все версии Microsoft. Data.SqlClient |
Настройки пула применяются к каждому отдельному пулу, а не всему процессу или серверу базы данных. Перед подъёмом Max Pool Sizeпроверьте, что соединения и считыватели быстро устраняются, и что база данных может принять итоговый результат по каждому экземпляру приложения.
Для ключей пула, поведения токена, периодов блокировки, очистки и диагностики см. раздел SQL Server connection pooling.
Варианты восстановления соединения
| Keyword | По умолчанию | Behavior | Версия |
|---|---|---|---|
Connect Retry Count |
1 |
Устанавливает количество повторных попыток для временных сбоев, подпадающих под это условие, при начальном подключении и при восстановлении разорванного неактивного соединения. Эффективное значение по умолчанию — 2 для распознанных Azure SQL endpoints и 5 для распознанных Azure Synapse и on-demand endpoints.
0 Отключает эти повторные попытки. |
Все версии Microsoft. Data.SqlClient |
Connect Retry Interval |
10 секунд | Устанавливает задержку перед последующими попытками первоначального подключения или восстановления после простоя. Допустимые значения — от 1 до 60 секунд. | Все версии Microsoft. Data.SqlClient |
Первая повторная попытка во время восстановления соединения происходит мгновенно.
Connect Retry Interval применяется перед последующими попытками. Чтобы обойти встроенную начальную и открытую повторную попытку для одной операции, используйте открытую перегрузку с OpenWithoutRetry.
Эти ключевые слова не повторяют команду, которая не работает во время запуска. Используйте настраиваемую логику повторных попыток для пользовательской политики открытия или команды. Повторно выполняйте команды только в том случае, если это безопасно.
Идентификатор сервера и опции сертификатов
Эти параметры позволяют выполнить определённые требования к именованию сертификатов или Kerberos. Они не заменяют обычную аутентификацию и валидацию сертификатов.
| Keyword | По умолчанию | Behavior | Версия |
|---|---|---|---|
Host Name In Certificate |
Имя хоста сервера | Предоставляет ожидаемое общее имя (CN) или альтернативное имя субъекта (SAN), если соединение использует DNS-псевдоним, отличающийся от сертификата. | Microsoft. Data.SqlClient 5.0 и более поздние версии |
Server Certificate |
Пустой | Предоставляет файл PEM, DER или CER, который должен точно совпадать с сертификатом сервера, когда Encrypt=Mandatory или Encrypt=Strict. |
Microsoft. Data.SqlClient 5.1 и более поздние версии |
Server SPN |
Происходит от названия сервера | Переопределяет главное имя сервиса (SPN), используемое для интегрированной аутентификации на основном сервере. Настраивайте это только в том случае, если используемая схема именования Kerberos требует явного указания SPN. | Microsoft. Data.SqlClient 5.0 и более поздние версии |
Failover Partner SPN |
Получено от партнёра по аварийному переключению | Переопределяет SPN для партнера по зеркалированию базы данных. Зеркалирование базы данных не рекомендуется к использованию. Используйте группы по готовности для новых развертываний. | Microsoft. Data.SqlClient 5.0 и более поздние версии |
Host Name In Certificate меняет название, используемое для сопоставления сертификатов. Он не доверяет недоверенному эмитенту.
Server Certificate закрепляет точный файл сертификата и требует обновления приложения при его ротации.
Неправильные переопределения SPN могут помешать аутентификации Kerberos или ослабить предусмотренную проверку подлинности. Исправьте регистрацию DNS и SPN вместо того, чтобы устанавливать переопределения, когда это возможно.
Используйте короткие строки подключения. Добавляйте опцию только в том случае, если вы можете указать, какое поведение она изменяет и как рабочая нагрузка проверяет это поведение.
Просмотр изменений в опциях
Перед изменением опции в производстве:
- Запишите текущую строку подключения, версию драйвера, тип конечной точки и наблюдаемую проблему.
- Меняйте одно поведение за раз.
- Установление тестового соединения, аутентификация, проверка сертификатов, пулирование, резервирование, отмена и выполнение запросов.
- Измеряйте жёсткие соединения, ожидания в пуле, задержку соединения и номера ошибок.
- Подтвердите параметры на каждом развернутом экземпляре.
Строки соединения являются частью ключа пула. Поэтапное развертывание может временно создавать как старые, так и новые пулы, что увеличивает общее количество физических подключений к базе данных.