2015-08-17 5 views
0

Это была одна досадная игла в стоге сена.Приложение с использованием базы данных SQL Server среди локальной сети

Приложение C# практически завершено, и мне нужно проверить сотрудничество двух или более разных машин в одной сети, чтобы увидеть, показывают ли они те же данные из базы данных.

При запуске SQL Server + Visual Studio вместе во время разработки, нет никаких проблем, я использую эту строку подключения и все работает нормально:

'@"Data Source=PCNAME\SQLEXPRESS;Initial Catalog=POS;";' 

Я теперь опубликовал приложение и установил его на другой машине, происходит в одной сети. Очевидно, что строка подключения не будет работать на этом компьютере, потому что ее имя не является PCNAME, это 2NDPC.

Но я сомневаюсь, что ответ заключается в том, чтобы открыть решение, отредактировать строку cnx и повторно опубликовать для каждой машины. Даже тогда, как они будут использовать одну и ту же базу данных?

TL; DR ** Что мне нужно ** Я хочу использовать машину, на которой я впервые разработал приложение для размещения базы данных, к которой могут подключаться локальные компьютеры.

Я пробовал переправлять порт 1434 и создавать правила, я попытался запустить tcp/ip-процесс в конфигурации сервера и убедиться, что служба агента браузера SQL или что-то не работает.

Но нет, я либо получаю, либо ошибка # 25 или ничего не происходит.

Пожалуйста, помогите и сообщите мне в явном виде, как я могу достичь этой цели.

+0

боян. Об этом ответили много раз. https://msdn.microsoft.com/en-us/library/ms345343.aspx http://blogs.msdn.com/b/sqlexpress/archive/2005/05/05/415084.aspx http: // stackoverflow. com/questions/2486610/how-to-connect-to-sql-server-from-another-computer – Jeremy

+0

Я сказал в своем посте, что я пробовал, и я видел эти сообщения, но я не получаю то же самое ответ. Весь мой запрос - получить помощь, зная, что я, возможно, ошибаюсь. –

+0

Вы упоминаете порт 1434. Это опечатка, или настоящий порт? порт по умолчанию - 1433. Кроме того, убедитесь, что вы сделали ВСЕ из статьи msdn, включая включение TCP-соединений. Прежде всего нужно установить SSMS (SQL Server MAnagement Studio) на PC2 и подключиться к вашему экземпляру на ПК1. И какую безопасность вы используете? встроенные окна, имя пользователя и пароль? если вы используете встроенные окна, являются ли ваши компьютеры в одном домене и существует ли пользователь для обоих компьютеров? – Jeremy

ответ

0

Вместо pcname попробуйте использовать TCP/IP-адрес. PCNAME зависит от Netbios. Вам также необходимо выполнить настройки брандмауэра, убедитесь, что сервер SQL разрешен для удаленных подключений и прослушивания на правильном порту (хотя 1433 - это порт по умолчанию, у вас не гарантируется наличие правильного экземпляра на этом порту). Я создал и опубликовал серию видеороликов на эту тему. Хотя речь идет об установке нашего приложения, 3 из 4 частей касаются установки SQL-сервера на хосте, настройки его для удаленного доступа и доступа к клиентам. Проверьте, если вы хотите, вот ссылка на 1-ый:

AccuSQL Installation part 1

+0

Я пробовал пересылку портов и используя IP-адрес @ "Источник данных = \\ 192.168.1.2; Начальный каталог = POS; Интегрированная безопасность = Истина"; Но тогда он выдает ошибку 25, в которой моя строка подключения неверна. –

+0

Это не похоже на правильную строку подключения для меня. Это больше похоже на сопоставление общих папок. Он должен выглядеть так: server = 192.168.1.2 \ InstanceNameIfAny; Database = pos; uid = userName; pwd = password Для использования интегрированной защиты вам также необходимо создать логины для удаленных подключений. –

+0

«Сервер = 192.168.1.2; База данных = POS; uid = Developer/IT;»; Возвращает "Логин потерпел неудачу для потребителя: Разработчик/IT" –

0

Вам необходимо загрузить строку подключения из файла конфигурации и опубликовывает запустить первый мастер запуска или что-то подобное, чтобы установить строку подключения первый раз.

Чтобы получить ваш 2NDPC для подключения, все, что вам нужно использовать, это DNS-имя ПК, и оно должно работать. Вам также может потребоваться установить SQL Server для разрешения соединений на TCP/IP в SQL Configuration Manager.

Также FYI, видя ваш комментарий об использовании IP-адресов, вы делаете это правильно, но вы не используете \\ перед IP. Просто замените имя вашего ПК на IP-адрес.EG:

Data Source=192.168.0.1;Initial Catalog=MyDB; ... 
0

1) Включить TCP/IP в диспетчере конфигурации SQL Server 2) Сделать Браузер уверен SQL Server работает, если нет, то запустить его, если вы не можете, щелкните правой кнопкой мыши> свойства> сервис tab> Start Mode = "Automatic"

Это то, что (за исключением людей, рекомендующих решения для брандмауэра, разных программ/сайтов и загрузки материалов для достижения этого). Мне не хватало, о чем никто не мог мне рассказать.

Итак, в зависимости от того, что вы делали недавно, вы могли или не могли изменить некоторые значения по умолчанию здесь и там. Я не уверен, что это по умолчанию, или если это произошло с моим обновлением win10, но в любом случае это сработало.

3) В диспетчере конфигурации SQL Server, щелкните правой кнопкой мыши на вашем/IP пункт TCP, нажмите свойства, Swtich на вкладку IP-адреса и ввести в 1433 году в поле TCP-порт под IP1 и IPAll

+0

только для записи, первый пункт в первой ссылке, которую я отправил вам в своем первом комментарии, рассказывает вам о шагах, чтобы сделать это, поэтому я спросил, внимательно прочитайте ли вы это. https://msdn.microsoft.com/en-us/library/ms345343.aspx снова прочитайте для справки. – Jeremy

+0

Я ценю вашу помощь, человек. Не принимайте это близко к сердцу. :) Кто скажет, что я не узнал выше из ваших ссылок? Я просто хотел, чтобы никто не сказал мне это прямо, чтобы подчеркнуть, что может оказаться сложным найти этот ответ, поэтому я его перепродал. –

+0

Я рад, что у вас это работает. Моя единственная проблема заключается в том, что вы конкретно заявили, что активировали TCP-соединения, когда у вас явно не было. Очень сложно помочь кому-то, когда вы не точны с заявлениями. – Jeremy