Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Развертывание клиент-серверного приложения.

59K
17 июня 2010 года
KeSeAn
14 / / 17.06.2010
Впервые создал клиент-серверное приложение. Среда VB.Net (студия 2008). База данных - МS SQL 2005. На компе-сервере работает отлично, а при установке на других машинах сети, при попытке соединения с сервером пишет, типа стандартные параметры SQL server не разрешают удаленные подключения. Ошибка 26 - ошибка при обнаружении указанного сервера или экземпляра. В свойствах сервера флажок "Разрешить удаленные соединения с этим сервером" установлен. Что делать? Раньше работал с Accsess - проблем не возникало. :confused:
262
17 июня 2010 года
Iktomy
1.2K / / 11.10.2004
конекшн стринг настроить для приложения
59K
17 июня 2010 года
KeSeAn
14 / / 17.06.2010
Так ведь в коде забито изначально имя сервера и базы данных.
Dim cn As SqlClient.SqlConnection = New SqlClient.SqlConnection(String.Format("Data Source={0};Database={1};Trusted_Connection=True;", ServerName, DatabaseName))
262
17 июня 2010 года
Iktomy
1.2K / / 11.10.2004
С ServerName, DatabaseName уверены, что правильно прописаны? Если да, то посмотрите настройки брандмауэра на клиентской и серверной машинах. Может просто порты закрыты.

А вообще, раз юзаете .NET для написания клиентского ПО, конекшн стринг лучхе хранить в свойствах приложения, а не жестко вбивать в код. Это так, совет.
59K
17 июня 2010 года
KeSeAn
14 / / 17.06.2010
Цитата: Iktomy
С ServerName, DatabaseName уверены, что правильно прописаны?

Но ведь на компе с базой работает. И вообще, я немного ошибся. У меня не клиент/сервер получился. Каждое приложение коннектится к базе самостоятельно.

5
17 июня 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: KeSeAn
Впервые создал клиент-серверное приложение. Среда VB.Net (студия 2008). База данных - МS SQL 2005. На компе-сервере работает отлично, а при установке на других машинах сети, при попытке соединения с сервером пишет, типа стандартные параметры SQL server не разрешают удаленные подключения. Ошибка 26 - ошибка при обнаружении указанного сервера или экземпляра. В свойствах сервера флажок "Разрешить удаленные соединения с этим сервером" установлен. Что делать? Раньше работал с Accsess - проблем не возникало. :confused:


1) Никогда не пользуйтесь string.Format для таких целей. Есть специальный класс ConnectionStringBuilder.
2) Вы можете соединиться с удаленной машины к СУБД стандартными средствами: VS2008, MSSMS2008 и т.п.?

59K
17 июня 2010 года
KeSeAn
14 / / 17.06.2010
Вот и мне кажется, что беда в строке подключения. Завтра на работе буду экспериментировать. Если не найду концов - буду постить дальше. Спасибо всем, кто откликнулся.
262
17 июня 2010 года
Iktomy
1.2K / / 11.10.2004
Цитата: KeSeAn
Но ведь на компе с базой работает.


какое у вас было имя сервера? localhost? если с клиентской машины коннектится к компу - то нужно прописывать имя сервера, это можете в настройках системы на сервере глянуть - какое там имя машины.

Цитата: KeSeAn
Каждое приложение коннектится к базе самостоятельно.


таки это и есть клиент, который окннектится к серваку.

59K
18 июня 2010 года
KeSeAn
14 / / 17.06.2010
Цитата: Iktomy
таки это и есть клиент, который окннектится к серваку.

Так, вроде, в случае с клиент-сервером к базе коннектится только одна прога-сервер, а остальные (клиенты) конектятся к ней через WinSock?
Насчет имени сервера - точно не помню (до работы еще не доехал), но вроде "SERGEY/SQLEXPRESS", где SERGEY - имя компа, на котором сервак, а SQLEXPRESS - сам SQL server (имя по умолчанию, я его не менял).

6
18 июня 2010 года
George
4.1K / / 05.01.2007
Это у вас уже какое то многозвенное приложение. В простейшем клиент-сервере есть сервер, например SQL сервер, и есть программа-клиент, которая к нему коннектицо, как удаленно, так и локально.
Многозвенные приложения, это например когда вы из программы обращаетесь к PHP скрипту на веб сервере, который достает информацию из свое базы данных и возвращает клиенту. В данном случае, проблема в том, что к СУБД на вебсервере извне доступа нет, поэтому приходится делать посредника - PHP скрипт. Вот как-то так.

зы. Если я натупил, сильно не пинайте.
59K
18 июня 2010 года
KeSeAn
14 / / 17.06.2010
На данном этапе тип получившегося приложения не так принципиален. Глобальный трабл в том, что компы сетки не видят сервер...
6
18 июня 2010 года
George
4.1K / / 05.01.2007
1. просканируйте порты сервера, посмотрите есть ли там нужный
2. прошаманьте коннекшнстринг
3. сообщите результаты :)

Кстати, щас подумал, а SQL Express - это вроде бесплатная версия, там не может быть ограничения вроде такого, что он не работает по сетке? Хотя наверное я туплю, он же просто порт открытым держит, без разницы откуда коннект... Хз.
8.2K
18 июня 2010 года
bagie2
299 / / 26.10.2008
по дефолту MSSQL имееет включенной только авторизацию Windows, а режим Mixed нет. может быть просто поэтому и не хочет коннектиться, что пройти авторизацию удаленный компьютер на сервере не может =)

Цитата:
Кстати, щас подумал, а SQL Express - это вроде бесплатная версия, там не может быть ограничения вроде такого, что он не работает по сетке?


это вполне полноценная СУБД, а самые главные ограничения - размер базы до 4Гб, размер ОЗУ используемой экземпляром сервера - до 1Гб, ограничения на многопроцессорные системы, что влияет на производительность, а также отсутствие других фишек старших редакций (урезанная репликация, урезанные инструменты (SSMS, Profiler и т.д.), нет агента (начиная с 2005), зеркалирования, секционирования, снапшотов, лог-шиппинга, индексированных представлений и всякого другого)
вот SQL Server Compact другое дело - по сетке не пашет, хотя я даже обманул его, чтобы он работал))) но были глюки при совместном доступе и я бросил эту затею.

1
18 июня 2010 года
kot_
7.3K / / 20.01.2000
Цитата: KeSeAn
На данном этапе тип получившегося приложения не так принципиален. Глобальный трабл в том, что компы сетки не видят сервер...


Так как вы следуете достаточно неразумной традиции - и категорически не желаете указать с чем и как вы работаете, то гадание на кофейной гуще может продолжатся еще очень долго.
Если вы (что вероятно) используете Express Edition - то по умолчанию у него стек сетевых протоколов отключен. Его соответственно надо включить - используя оснастку "Диспечер конфигурации ...". Это раз.
Во вторых - строка подключения в случае, если разработка ведется на той же машине, формируется в виде = "./SQLEXPRESS" - что значит - подключится используя инстанс на данном компьютере. Т.е. вам нужно вообщето проверить - к чему вы пытаетесь подключится (либо явно задавать имя сервера).
Третья причина - возможно вам нужно явно задать адрес и порт подключения (1433 - помоему), это достаточно частая причина, особенно если в сети не поднят DNS.

1
18 июня 2010 года
kot_
7.3K / / 20.01.2000
Цитата: George

Кстати, щас подумал, а SQL Express - это вроде бесплатная версия, там не может быть ограничения вроде такого, что он не работает по сетке? Хотя наверное я туплю, он же просто порт открытым держит, без разницы откуда коннект... Хз.


нет нету никаких ограничений в данном случае.

8.2K
18 июня 2010 года
bagie2
299 / / 26.10.2008
Цитата:
стандартные параметры SQL server не разрешают удаленные подключения


всё-таки сдается мне, что коннект есть, просто сервер рубит соединение. если он не находит сервера там другое пишет и обычно висит еще долго, если Connection Timeout не поменян. а еще такое у меня было, не поверите. стоял NOD32 с включенным IMON. и что-то похожее было, ошибка. я всё перелопатил, попробовал и потом уже вспомнил про нод и вуаля :)

1
18 июня 2010 года
kot_
7.3K / / 20.01.2000
Цитата: bagie2
всё-таки сдается мне, что коннект есть, просто сервер рубит соединение. если он не находит сервера там другое пишет и обычно висит еще долго, если Connection Timeout не поменян. а еще такое у меня было, не поверите. стоял NOD32 с включенным IMON. и что-то похожее было, ошибка. я всё перелопатил, попробовал и потом уже вспомнил про нод и вуаля :)


да. это тоже может быть причиной.
Но начать стоит с:

59K
18 июня 2010 года
KeSeAn
14 / / 17.06.2010
Цитата: bagie2
по дефолту MSSQL имееет включенной только авторизацию Windows, а режим Mixed нет.

Имеется в виду "Серверная проверка подлинности"? У меня включено "Проверка подлинности SQL server и Windows".
ЗЫ: Перепробовал разные строки подключения - никак. Установил SQL server на другом компе - сервера друг друга не видят. Может какую папку расшарить?
George, по поводу сканирования портов - это как?

6
18 июня 2010 года
George
4.1K / / 05.01.2007
Ну убедиться, что никакой файрвол не блокирует доступ к порту. впрочем лушче делать то, что Кот говорит. :)
8.2K
18 июня 2010 года
bagie2
299 / / 26.10.2008
KeSeAn
ааааа, кошмар :( наберите просто в командной строке telnet 192.168.0.1 1433 и увидите приконнектится или нет. порт и IP меняйте, если другие. и то, что kot_ писал смотрите. и что трудно разве нажать Ctrl+C в месадж боксе ошибки и запостить сюда или в гугл? там еще наверняка есть и код ошибки.
59K
18 июня 2010 года
KeSeAn
14 / / 17.06.2010
bagie2, у меня Касперский. В настройках сети указано "Не проверять защищенные соединения"
kot_, "Protocol for SQLexpress - TCP/IP - Disable"
bagie2
Цитата:
и что трудно разве нажать Ctrl+C в месадж боксе ошибки и запостить сюда

В стартовом посте писал уже, но можно еще раз

Цитата:
Ошибка при подключении к серверу. При подключении к SQL Server 2005 эта ошибка может быть вызвана тем, что стандартные параметры SQL Server не разрешают удаленные подключения. (provider: Сетевые интерфейсы SQL, error: 26 - Ошибка при обнаружении указанного сервера или экземпляра)


Совсем я запутался...:(

5
18 июня 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: KeSeAn

kot_, "Protocol for SQLexpress - TCP/IP - Disable"

Так включите его!
А в касперском добавьте исключение на порт 1433.

1
18 июня 2010 года
kot_
7.3K / / 20.01.2000
Цитата: KeSeAn

kot_, "Protocol for SQLexpress - TCP/IP - Disable"


Ну так сделайте же его Enable.

59K
18 июня 2010 года
KeSeAn
14 / / 17.06.2010
В общем почти все. Вот здесь пошаговое руководство "Как настроить SQL Server 2005 для удаленных подключений". Оказывается по умолчанию они закрыты. Сервер уже вижу, только что-то с логином входа затык. Вроде добавил пользователя на сервере, а вылетает ошибка "Login failed for user 'Иванов'. The user is not associated with a trusted SQL Server connection." - "Пользователь не связан с подключением SQL сервера, которому доверяют.". На данный момент строка подключения такая:
Цитата:
Data Source=ANNA\SQLEXPRESS;Initial Catalog=VoschodWork_DataBase;User Id=Иванов;Password=;

:confused:

5
18 июня 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: KeSeAn
Оказывается по умолчанию они закрыты.

Об этом говорилось сразу.

Цитата: KeSeAn
добавил пользователя на сервере, а вылетает ошибка "Login failed for user 'Иванов'.

Вы где пользователя создали? В СУБД или в Windows? По-хорошему нужно в СУБД.

59K
18 июня 2010 года
KeSeAn
14 / / 17.06.2010
В СУБД:
Имя пользователя - Иванов
Имя входа - BULTIN\Пользователи
Схема - db_datawriter
Членство в роли - db_datawriter
8.2K
18 июня 2010 года
bagie2
299 / / 26.10.2008
вы в строке подключения пишите Иванов, а Иванов это пользователь - объект уровня базы, а не экземпляра сервера и никак не логин входа. а логин входа BULTIN\Пользователи и он с виндовой авторизацией. в этом случае в строку подключения впишите Integrated Security=True а пользователь на клиенте, который запускает вашу программу должен проходить виндовую авторизацию на сервере. либо создайте новый логин так

 
Код:
CREATE LOGIN [Иванов] WITH PASSWORD=N'123', CHECK_POLICY=OFF
ALTER USER [Иванов] WITH LOGIN = [Иванов]


Цитата:
В стартовом посте писал уже, но можно еще раз


[SIZE="1"]да, там не разглядел было сплошняком, извиняюсь[/SIZE]

59K
18 июня 2010 года
KeSeAn
14 / / 17.06.2010
Цитата:
вы в строке подключения пытаетесь писать Иванов, когда там должен быть логин, а Иванов это пользователь - объект уровня базы, а не экземпляра сервера и BULTIN\Пользователи это логин виндовый. в этом случае в строку подключения впишите Integrated Security=True а пользователь на клиенте, который запускает вашу программу должен проходить авторизацию на сервере.


Что-то, ребята, крыша у меня едет с этим SQL sever'ом. Может кто-нибудь пошагово объяснит как Иванову подключитья к серверу?

59K
18 июня 2010 года
KeSeAn
14 / / 17.06.2010
Все... Соединился :D:D:D Всем огромное спасибо за помощь и внимание!!!
1
18 июня 2010 года
kot_
7.3K / / 20.01.2000
угу. а ж мне полегчало. :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог