Имя экземпляра 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 мог связываться с любым портом, на который он похож.

В противном случае вы должны явно принудительно указать именованный экземпляр на неименованном порту.

Другие вопросы по тегам