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;
    
  • Используйте служебную программу клиентской сети для удаления других протоколов.

ССЫЛКИ

Устранение ошибок подключения к SQL Server