SQL Server клиенты могут изменять протоколы, когда клиентские компьютеры пытаются подключиться к экземпляру SQL Server
В этой статье описывается, SQL Server клиенты могут изменять протоколы, когда клиентские компьютеры пытаются подключиться к экземпляру SQL Server.
Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 328383
Сводка
Клиентские компьютеры с компонентами доступа к данным Майкрософт (MDAC) версии 2.6 или более поздней, могут использовать несколько протоколов или механизмов межпроцессного взаимодействия (IPC), чтобы установить подключения к SQL Server.
Дополнительная информация
Улучшена сетевая библиотека на стороне клиента, Dbnetlib.dll для MDAC версии 2.6 и более поздних версий. В MDAC версии 2.6 и более поздних версиях, если доступно несколько протоколов и попытка подключения по первому протоколу завершается ошибкой, клиентское приложение немедленно пытается использовать один из других протоколов.
По умолчанию клиенты имеют протоколы TCP и именованные каналы в качестве доступных протоколов. Вы можете управлять упорядочением протокола с помощью служебной программы SQL Server Client. Клиентское приложение использует протоколы в порядке, указанном на клиентском компьютере. Порядок протокола хранится в следующем расположении раздела реестра в значении ProtocolOrder:
HKLM\Software\Microsoft\MSSQLServer\Client\SuperSocketNetLib
Если вы используете SQL Server 2005, порядок протокола сохраняется в записи реестра ProtocolOrder в следующем подразделе реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI<version>
Например, если на клиентском компьютере доступны как TCP, так и именованные каналы, и порядок:
- TCP
- Именованные каналы
Когда клиентский компьютер пытается установить TCP-подключение к серверу, а попытка подключения возвращает код возврата, отличный от нуля, клиент прозрачно пытается установить соединение с помощью следующего протокола в списке, который является Именованные каналы. В этом сценарии клиент не может создать TCP-подключение; однако клиент успешно устанавливает подключение по именованным каналам.
Примечание.
Клиент не получает ошибку, указывающую на сбой первого протокола.
Если клиентское приложение использует второй протокол и также возвращает ошибку, клиенту возвращается ошибка.
Если создать псевдоним с помощью одного из следующих методов, клиентское приложение использует сведения о псевдониме для установления подключения к серверу и не использует дополнительные протоколы.
- С помощью служебной программы клиентской сети SQL Server
- Использование диспетчер конфигурации SQL Server
- При создании имени источника данных ODBC (DSN)
Если вы хотите управлять протоколом, используемым клиентским приложением для каждой попытки подключения, и не разрешать клиенту использовать несколько протоколов, можно выполнить одно из следующих действий:
Используйте служебную программу sql Client Network или диспетчер конфигурации SQL Server, чтобы создать псевдоним, указав предпочитаемый протокол.
Укажите протокол в строка подключения. Например:
DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBMSSOCN;Address=IP_Address,1433;UID=YourUID;PWD=YourPassword;
В этом примере сетевой протокол указывается как
DBMSSOCN
, что означает, что требуется использовать протокол TCP/IP. Если вы укажете протокол внутри строка подключения, Dbnetlib использует только указанный протокол и не пытается использовать какой-либо другой протокол. Аналогичным образом, чтобы включить только протокол именованного канала, используйте строка подключения, аналогичный следующему:DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBNMPNTW;Address=\\.\pipe\sql\query;UID=YourUID;PWD=YourPassword;
Используйте служебную программу клиентской сети для удаления других протоколов.
ССЫЛКИ
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по