Имя экземпляра SQL Server с IP-адресом
У меня происходит очень странная ситуация, и я надеюсь, что кто-то здесь знает, почему.
У меня TCP/IP включен для всех портов по умолчанию порт 1433.
Все тесты соответствуют SQL Server Management Studio и моей программе.
Это работает:
- Имя_компьютера \ InstanceName
- 127.0.0.1
- 127.0.0.1,1433
- 192.168.1.100
- 192.168.1.100,1433
Это не работает:
- 127.0.0.1 \ InstanceName
Примечание: я знаю, что это не связано с брандмауэром, потому что я могу telnet в 127.0.0.1 на порту 1433.
Примечание 2: Строка подключения не имеет значения, поскольку тесты соответствуют Management Studio, но я все равно дам ее: server={0};Integrated Security=True;Database=MyDatabase
При чтении MSDN кажется, что вы должны иметь возможность подключиться к имени экземпляра через IP-адрес.
Что тут происходит?
1 ответ
Именованные экземпляры SQL по умолчанию прослушивают случайный порт. Вам нужно запустить службу SQL Browser, она прослушивает UDP на 1434 и отвечает на запросы обнаружения экземпляра, сообщая клиенту истинный порт прослушивания. Вам также нужно разрешить брандмауэру пробивать дыры в зависимости от имени процесса, чтобы SQL мог связываться с любым портом, на который он похож.
В противном случае вы должны явно принудительно указать именованный экземпляр на неименованном порту.