Не было у бабушки проблем....(про строку подключения к SQL Server)

mdm114

В общем все время пользовался арендованным местом под базу на удаленном серваке. Чет меня дернуло поставить себе сервак и развернуть на нем MSSQL SERVER. Вроде все домучил, остался один вопрос:Как правильно в VisualStudio поступить со строками подключения? Доступ нужен как по локалке, так и "снаружи". Соответственно, если в локальной сети пытаться подключиться через внешний адрес, то он не пускает. Как правильно поступить? Писать две строки подключения? Одну с локальным адресом, другую с внешним и чтобы по очереди пытались соединиться? Или есть какой то другой вариант? Или тут дело не в подключении, а на серваке что то докрутить надо?
16 ответов

mdm114

"снаружи" это как? Проброс порта с роутера или еще что-то?


mdm114

VisualStudio
ты там удаленно программируешь?


mdm114

В общем все время пользовался арендованным местом под базу на удаленном серваке. Чет меня дернуло поставить себе сервак и развернуть на нем MSSQL SERVER. Вроде все домучил, остался один вопрос:Как правильно в VisualStudio поступить со строками подключения? Доступ нужен как по локалке, так и "снаружи". Соответственно, если в локальной сети пытаться подключиться через внешний адрес, то он не пускает. Как правильно поступить? Писать две строки подключения? Одну с локальным адресом, другую с внешним и чтобы по очереди пытались соединиться? Или есть какой то другой вариант? Или тут дело не в подключении, а на серваке что то докрутить надо?
шлюз (роутер) настраивать и/или с dns разбираться.шлюз может по разному обрабатывать запросы из вне и из локалки по внешнему ip, поэтому может быть ситуация, что из дома можно подключиться к удалённому серверу, а локально к тому же серверу по тому же внешнему IP - нет.Можно вместо ip-адреса использовать имя и просто хоть в файле hosts прописать нужный IP. Тогда строка подключения будет одна и та же, но это дичь.


mdm114

"Снаружи" это не из локальной сетиПроект один. Лежит на яндекс диске, соответственно доступ к нему есть и с рабочего компа и с домашнего. До сего момента строка подключения была одна и та же, так как место под базу арендовал на сервере 1gb.
// 
// sqlConnection1
// 
this.sqlConnection1.ConnectionString = "Data Source=ms-sql-4.in-solve.ru;Initial Catalog=1gb_...;Persist Security Info=True";
this.sqlConnection1.FireInfoMessageEventOnUserErrors = false;
Сейчас получается из локальной сети надо
// 
// sqlConnection1
// 
...."Data Source=192.168.1.27;.....
А при работе дома необходимо указывать уже внешний ip
// 
// sqlConnection1
// 
...."Data Source=82.288.122.202;.....
1433 проброшен. Через Management Studio доступ есть отовсюду. Интересен сам механизм доступа в Visual Studio. Неужели надо два разных проекта заводить для компа в локальной сети и дома, чтобы в каждом строка подключения была своя?


mdm114

шлюз может по разному обрабатывать запросы из вне и из локалки по внешнему ip, поэтому может быть ситуация, что из дома можно подключиться к удалённому серверу, а локально к тому же серверу по тому же внешнему IP - нет...
Теперь немного понял где ковыряться, спасибо


mdm114

нужно иметь проект базы данных нормальный, а не базу данных, тогда развернуть её где угодно и когда угодно проблем не составит. В вашем случае, можно это реализовать через VPN, это будет правильный вариант.Пробрасывать порты наружу, это всё равно, что с голой задницей в форточке. Безопасность будет 0вой.Ну и при удаленном подключении без VPN придется использовать базовую аутентификацию\авторизацию на sql сервере.Так же необходимо настроить доступ на Firewall'ах всех промежуточных звеньев, ведь вы пытаетесь с какого то левого IP адреса подключиться, а любому Firewall'У это не понравится


mdm114

this.sqlConnection1.ConnectionString = "Data Source=ms-sql-4.in-solve.ru;Initial Catalog=1gb_...;Persist Security Info=True";
Хардкодить строку подключения - дурной тон. Снесите хотя бы в конфиг-файл (и не будет подобных проблем).


mdm114

Roman Mejtes,про vpn в первую очередь подумал, но это немного не то. Получается его придется ставить везде, где будет готовая программа, хоть она хоть и стоит всего на 3-4 компах


mdm114

LR,там по уму надо все заново переписывать. Программка писалась еще в 2008 году. Там много от эпохи динозавров осталось..За совет, все равно спасибо


mdm114

LR,т.е как вариант просто разные конфиг-файлы на разных компах сделать?


mdm114

mdm114,один раз после разворачивания подправить в конфиге строку подключения не очень сложно, имхо.Как вариант, запоминать параметры последнего успешного подключения на каждом компе, если их нет или с ними не удается подключится - диалог подключения...


mdm114

Пока вроде примерно план действий набросал. Буду пробовать. Спасибо всем за советы


mdm114

Можно еще с сиквельными алиасами на локальной машине попробовать пошаманить. Это в Sql Configuration Manager находится, если что.


mdm114

fkthat,вот это для меня вообще темный лес. Если можно поподробнее


mdm114

fkthat,вот это для меня вообще темный лес. Если можно поподробнее
How to setup and use a SQL Server alias


mdm114

Всем спасибо за советы. Докрутили роутер. Все работает так как хотелось. Строку подключения тоже в отдельный файл вынес. С псевдонимами пока разбираюсь, но, насколько я понял это актуально только для локальной сети? По удалёнке он не подключится через него?