Немного догадываюсь, но у SQL есть разные опции для сетевых протоколов, включая Shared Memory, TCP / IP, Named Pipes и VIA. Вы можете установить конфигурацию для сервера и клиентов (на соответствующих компьютерах) с помощью диспетчера конфигурации SQL Server.
Собственный клиент часто будет использовать именованные каналы, которые часто не будут работать по глобальной сети, поскольку (я думаю) он использует широковещательные сообщения для разрешения имен (и, возможно, потребуется открыть больше портов). Таким образом, если SSMS пытается подключиться через именованные каналы, возможно, ей не удастся разрешить имя сервера, тогда как, если sqlcmd использует TCP / IP, он сможет.
Другими словами, первое место, которое я бы посмотрел, было бы в SQL Server Configuration Manager как на сервере, так и на клиенте . Попробуйте отключить все, кроме TCP / IP, или измените порядок поставщиков, чтобы TCP / IP был наверху. Вы можете оставить общую память прямо вверху и включить ее, если хотите, это удобно для подключения к локальной машине.