У меня есть удаленный сервер, который, в свою очередь, имеет доступ к экземпляру SQL Server, работающему в той же сети.
Я разрабатываю инструменты для использования этого SQL-сервера, но у меня нет резервной копии или прав на резервное копирование / копирование структуры базы данных. Поэтому мне нужен доступ к этой базе данных на моей машине разработки.
Мы подключаемся к удаленному серверу с помощью TeamViewer и можем получить доступ к серверу с помощью TeamViewer VPN.
Есть ли способ настроить сервер на «пересылку» для всех входящих подключений через порт 1433 (они будут поступать только через VPN) на локальный IP-адрес для SQL Server?
См. Руководство Teamviewer здесь: http://www.teamviewer.com/en/res/pdf/TeamViewer7_Manual_RemoteControl_EN.pdf
Согласно странице 21 при использовании TeamViewer VPN:
Примечание. Если вы подключаете локальный компьютер к удаленному через TeamViewer VPN, только эти два компьютера будут связаны вместе в виртуальной частной сети. Никакие другие компьютеры в локальной сети любого компьютера будут недоступны.
Возможно, существует способ сообщить виртуальному адаптеру Teamviewer VPN на удаленном сервере трафик NAT через сервер SQL, но они не будут его поддерживать, и это может вызвать другие непредвиденные последствия для соединения.
Если вы разрабатываете инструменты, которым нужен доступ к этому SQL-серверу, не может ли кто-нибудь предоставить вам доступ к нему с вашего компьютера разработчика (через Teamviewer VPN, преобразование ваших запросов через NAT только через брандмауэр и т.д.)?
Спасибо @TheCleaner за руководство. Однако я нашел обходной путь, которым, как я думал, поделюсь, если кто-то еще столкнется с аналогичной ситуацией.
Уловка заключалась в том, чтобы установить SQL Server Express на промежуточный сервер, который я контролирую. Затем я добавил «Связанный сервер» к целевому экземпляру SQL Server на другом сервере.
TeamViewer VPN позволяет мне подключиться к промежуточному серверу SQL, а затем я могу запросить связанный сервер с моей машины разработки.
Небольшая поправка в моем коде позволяет выполнять запросы к связанному серверу «server.database.dbo.table», а не просто «dbo.table», когда я нахожусь в режиме разработки.