Правильная строка подключения для удаленного SQL server для C#

Я просто хочу знать правильную строку подключения sql для удаленного выпуска SQL server express.

это то, что у меня есть, но у меня есть некоторые проблемы

 SqlConnection cs = new SqlConnection(@"Data Source=(IP Address)PC-NAMESQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password");

Я получил эту ошибку в моем отладчике C#:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)

спасибо заранее!

3 ответов


из вашего комментария:

IP-адрес является статическим IP-адресом. Я пытаюсь связаться с внешним миром.

если база данных, к которой вы пытаетесь подключиться, находится на компьютере за [маршрутизатором/брандмауэром/модемом], который имеет целевой адрес, вам нужно будет использовать переадресацию портов на [маршрутизаторе/брандмауэре/модеме] для переадресации всех соединений на TCP-порт 1433 до целевой машины.

если вы пытаетесь подключиться к домашней компьютер за модемом ADSL со статическим IP-адресом, ваш модем ADSL должен быть настроен с переадресацией портов для подключения внешнего порта 1433 с тем же портом на внутреннем адресе. Это должны быть сделано на модеме, и не может можно сделать только с помощью строки подключения.

предположим, у вас есть ADSL-модем, прослушивающий 127.2.3.4 (недопустимый адрес только для демонстрации) и ПК за ним с IP адрес 192.168.0.100. Настройте модем для пересылки порта 1433 в 192.168.0.100:1433 (как будет зависеть от марки и модели модема). Тогда ваша строка подключения будет:

Data Source=127.2.3.4\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password

предполагая, что SQLEXPRESS является единственным экземпляром базы данных на сервере, и поскольку порт 1433 по умолчанию, вы можете использовать более простой:

Data Source=tcp:127.2.3.4;Initial Catalog=dbase;User ID=sa;Password=password

на Network Library=DBMSSOCN спецификация заменена на tcp: и по умолчанию предполагается, например и порта.


устранение : если вы предоставляете удаленную машину IP address тогда вам не нужно предоставлять hostname

Попробуйте Это:

SqlConnection cs = new SqlConnection(@"Data Source=(IP Address)\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password");

Почему бы вам не попробовать Sqlconnection String Builder здесь.