Как мой код подключается к именованному экземпляру без браузера SQL Server? - PullRequest
0 голосов
/ 20 февраля 2019

Раньше я сталкивался с проблемой хедшчера на машине, которую я восстановил из резервной копии, задокументировано здесь .

Оказывается, служба браузера SQL Server на самом деле не работала правильновосстановленная машина;отключение его на моей тестовой машине дало те же результаты.Чтобы повторить здесь, со строкой подключения вида:

servername\INSTANCENAME

старый код VB6 с использованием ADO 2.8 и современный код EF с использованием .Net 4 (System.Data.SqlClient.SqlConnection) оба смогли подключиться кбаза данных с локального хоста, но только код VB6 смог подключиться удаленно.SQL Server Management Studio (SSMS) следовал шаблону .Net - он мог подключаться к экземпляру локально, но не удаленно.

Используя строку подключения в форме:

servername,instance_port_number

VB6,EF и SSMS были в состоянии установить отличное соединение из любого места.

Черт, что здесь происходит?Я думал, что служба браузера необходима для предоставления информации о портах для соединений, но, очевидно, здесь есть некоторый запасной вариант.Итак:

  • что происходит?
  • почему это всегда работает на localhost?
  • почему он работает только удаленно для кода ADODB?

РЕДАКТИРОВАНИЕ: дальнейшее расследование выявило несколько вещей.

  • происходили локальные соединениячерез общую память вместо использования стека TCP / IP.Отключение протокола Shared Memory также привело к сбою всех локальных соединений.
  • похоже, что ADODB где-то кэшировал предыдущий поиск порта?Ручное изменение порта, на котором работал экземпляр, приводило к тому, что ADODB не мог работать по имени экземпляра до тех пор, пока он не подключился хотя бы один раз через браузер SQL Server.

Я все равно буду благодарен за некоторую документацию илиголос опыта в этом вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...