Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выбора протокола при соединении по SQLOLEDB  [new]
Acce_Ekb
Member

Откуда: Екатеринбург
Сообщений: 87
Добрый день,

Какой будет порядок выбора на клиенте сетевого протокола при подключении через SQLOLEDB?
Как форма записи имени сервера в строке соединения влияет на выбор протокола?
На стороне сервера все протоколы включены.

Для Native Client понятно, порядок перебора протоколов задается на сервере.
По SQLOLEDB нигде не могу найти информацию.
31 окт 18, 10:41    [21719942]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7392
Acce_Ekb,

если не ошибаюсь, TCP, именованные каналы, общая память.
31 окт 18, 11:09    [21719979]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7392
Владислав Колосов,

если каналы не объявлены, то сразу память.
31 окт 18, 11:09    [21719980]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
Acce_Ekb
Member

Откуда: Екатеринбург
Сообщений: 87
Владислав Колосов,

Не помните, где это описано?
31 окт 18, 11:29    [21720006]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7392
Acce_Ekb,

Даже думать об этом не желаю.
31 окт 18, 12:17    [21720125]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Acce_Ekb
Как форма записи имени сервера в строке соединения влияет на выбор протокола?

если в строке подключения указан порт, то tcp\ip.
---
почему бы явно не прописать нужный протокол в строке подключения?
31 окт 18, 12:26    [21720149]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
court
Member

Откуда:
Сообщений: 1956
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/320ae626-0bf5-401e-b4a1-1a8173ded21a/wswpexe-accessing-mssql-on-1433-when-serverlocal-on-conn-string?forum=sqldataaccess
SQLOLEDB operates with the connection sequence from:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\ProtocolOrder

OR

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\ProtocolOrder

Please also pay attention to the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\LastConnect which contains information about the last successfull connection attempt.
31 окт 18, 12:29    [21720163]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
invm
Member

Откуда: Москва
Сообщений: 9116
https://docs.microsoft.com/ru-ru/sql/database-engine/configure-windows/configure-client-protocols?view=sql-server-2017
31 окт 18, 12:41    [21720192]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
Acce_Ekb
Member

Откуда: Екатеринбург
Сообщений: 87
Yasha123
почему бы явно не прописать нужный протокол в строке подключения?

Это расследование уже задним числом. Просто для себя хочется понимать, почему так:)
31 окт 18, 13:30    [21720260]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
Acce_Ekb
Member

Откуда: Екатеринбург
Сообщений: 87
invm,

Так это про Native Client?
У нас речь про клиентскую библиотеку MDAC SQLOLEDB.

Столкнулись с ситуацией, что при установке SQL 2017 Developer Edition на сервере оказался включен только Shared Memory. И клиентское ПО, запущенное на том же сервере, работающее через ADO, начало сильно тормозить (подозреваем антивирус). "Полечилось" включением на сервере TCP/IP.

В MDAC порядок выбора протоколов - TCP/IP, Named Pipes, Shared Memory.
В Native Client по умолчанию (если не менять настройки SQL Server Native Client Configuration) - Shared Memory, TCP/IP, Named Pipes.
31 окт 18, 13:37    [21720264]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
invm
Member

Откуда: Москва
Сообщений: 9116
Acce_Ekb
Так это про Native Client?
У нас речь про клиентскую библиотеку MDAC SQLOLEDB.
Это без разницы. Принцип не изменился.
Если интересуют древние средства настройки - см. SQL Server Client Network Utility (cliconfg.exe)
31 окт 18, 13:50    [21720280]     Ответить | Цитировать Сообщить модератору
 Re: Выбора протокола при соединении по SQLOLEDB  [new]
Acce_Ekb
Member

Откуда: Екатеринбург
Сообщений: 87
Продолжаю опыты.
  • Делаю коннект на локальной машине, протоколы Shared Memory, TCP включены, см. скриншоты.
  • Имя при коннекте указываю в виде ".\<instance>"
  • Приложение работает через ADO (SQLOLEDB).

    Коннектится по TCP. Почему не по Shared Memory, ведь она включена и более приоритетна всегда?

    К сообщению приложен файл. Размер - 57Kb
  • 1 ноя 18, 15:08    [21721620]     Ответить | Цитировать Сообщить модератору
     Re: Выбора протокола при соединении по SQLOLEDB  [new]
    Владислав Колосов
    Member

    Откуда:
    Сообщений: 7392
    Acce_Ekb
    Почему не по Shared Memory, ведь она включена и более приоритетна всегда?


    автор
    TCP, именованные каналы, общая память.
    1 ноя 18, 15:38    [21721671]     Ответить | Цитировать Сообщить модератору
     Re: Выбора протокола при соединении по SQLOLEDB  [new]
    Acce_Ekb
    Member

    Откуда: Екатеринбург
    Сообщений: 87
    Владислав Колосов,

    Вы читали, что вчера invm писал?
    1 ноя 18, 15:50    [21721688]     Ответить | Цитировать Сообщить модератору
     Re: Выбора протокола при соединении по SQLOLEDB  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9116
    Acce_Ekb,

    А ваше приложение 64-битное? Если нет, то не те клиентские настройки смотрите.
    1 ноя 18, 15:53    [21721693]     Ответить | Цитировать Сообщить модератору
     Re: Выбора протокола при соединении по SQLOLEDB  [new]
    Acce_Ekb
    Member

    Откуда: Екатеринбург
    Сообщений: 87
    invm,

    32-битное. Те такие же.
    Завтра еще приведу скриншоты - к каким веткам реестра (SuperSocket...) лезет приложение и, для сравнения, SSMS.
    1 ноя 18, 16:19    [21721735]     Ответить | Цитировать Сообщить модератору
     Re: Выбора протокола при соединении по SQLOLEDB  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9116
    Acce_Ekb
    SuperSocket...
    Похоже ваше приложение использует клиентские библилотеки от SQL Server 2000. Там Shared Memory еще не было.
    Настройки этого раритета доступны через cliconfg.exe
    1 ноя 18, 17:11    [21721779]     Ответить | Цитировать Сообщить модератору
     Re: Выбора протокола при соединении по SQLOLEDB  [new]
    Гавриленко Сергей Алексеевич
    Member

    Откуда: Moscow
    Сообщений: 36691
    invm
    Там Shared Memory еще не было.
    По памяти не скажу, но вроде было. Вот, к примеру, SQL 2000 Not listening on Shared Memory. Why not?
    1 ноя 18, 18:14    [21721835]     Ответить | Цитировать Сообщить модератору
     Re: Выбора протокола при соединении по SQLOLEDB  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9116
    Гавриленко Сергей Алексеевич
    По памяти не скажу, но вроде было.
    Точно. Было. Библиотека dbmslpcn.
    1 ноя 18, 18:42    [21721856]     Ответить | Цитировать Сообщить модератору
     Re: Выбора протокола при соединении по SQLOLEDB  [new]
    Acce_Ekb
    Member

    Откуда: Екатеринбург
    Сообщений: 87
    Вот для интереса трассировка обращений к реестру
    1. откуда читает порядок протоколов старое 32-битное приложение через ADO (SQLOLEDB)
    2. куда пишет порядок протоколов утилита конфигурации SQL 2016.

    К сообщению приложен файл. Размер - 147Kb
    2 ноя 18, 11:34    [21722323]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить