Раньше я сталкивался с проблемой хедшчера на машине, которую я восстановил из резервной копии, задокументировано здесь .
Оказывается, служба браузера 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.
Я все равно буду благодарен за некоторую документацию илиголос опыта в этом вопросе.