Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Проблема с подключением к MSSQL2000 через ADOConnection   Найти похожие ветки 

 
_Konstantin   (2006-02-08 20:09) [0]

Привет всем! Пишу программу, которая позволяет списывать инградиенты блюд со склада по калькуляционной карте (рецепту). Подключение происходит через ADOConnection. На каждой точке (баров несколько) при подключении происходит формирование строки подключения где прописывается имя сервера к которому нужно подключиться и имя базы данных. Далее ADOQuery, DataSource и DbgridEh. SQL запрос прописан железно в ADOQuery (что то вроде SELECT * FROM table),локально всё работает. Где то подводный камень, не могу понять, но с удаленной машины подключение не происходит. Сначала долго думает, а потом выдаёт что-то типа не вижу сервер... Пробовал с тонким клиентом, после долгой возни заработало, но почему ADOConnection не работает???


 
MOA ©   (2006-02-08 20:50) [1]

>почему ADOConnection не работает???
>На каждой точке
Хотя инфы маловато (для разрешения проблемы хорошо бы знать - что за точки, что за клиенты на них стоят, как подключаются) но попробую предположить, что не исключено, что брандмауэр (либо на точке либо на сервере) режет пакеты на портах, которые использует скуль.
Удачи!


 
_Konstantin   (2006-02-08 21:15) [2]

Админ уверяет, что сетевых фильтров нет, брендмауэров тоже. Есть подозрение, что не правильно задано имя сервера. Подскажите, какое имя сервера правильно задавать, железное, под которым он виден в сетевом окружении или же имя MSSQL сервера. Кстати с тонким клиентом на 1024 порту все работает замечательно. А подключение происходит так, при включении формируется строка подключения в

ADOConnection.ConnectionString:=
"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=sklad2;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID="+
a.ReadString("server")+
";Use Encryption for Data=False;Tag with column collation when possible=False";

где sklad2 имя б.д., a.ReadString("server") имя сервера считанное из реестра (добавлено во время первой настройки).


 
MOA ©   (2006-02-08 22:39) [3]

Подключение к MSSQL по какому протоколу?
Если TCP/IP - как в Вашем случае станция определяет адрес сервера по его имени?


 
_Konstantin   (2006-02-09 06:24) [4]

Вообще IP или имя сервера, и port задаётся в SocetConnection при подключении с тонким клиентом. В этом случае всё работает, только нужна ещё одна прога scktsrvr.exe, которая поставляется вместе с дельфи и там нужно указать порт в свойствах на котором всё это будет работать. Строка подключения прописывается на тонком клиенте, который стоит на одной машине с сервером, поэтому проблем не возникает. В случае с ADOConnection строку подключения нужно формировать на каждой машине отдельно (не буду же я для этого приезжать к заказчику, подключать машину в сеть и искать там сервер). При её формировании, если ты пишешь программу на удалённой машине которая уже в сети с сервером, сервер выбирается из выпадающего списка. Как он там появляется - научная тайна покрытая мраком. При этом ни порт, ни протокол, ни IP адрес не прописывается. Поэтому я и спрашиваю, может быть ещё какой-то подводный камень? A ADOConnection очень нужен для подключения хранимых процедур.


 
ЮЮ ©   (2006-02-09 06:46) [5]


> В случае с ADOConnection строку подключения нужно формировать
> на каждой машине отдельно (не буду же я для этого приезжать
> к заказчику, подключать машину в сеть и искать там сервер).
>  


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

function BuildConnectionStringForMSSQL(
 const AServer, ADatabase, AUser, APassword: string
): string;
begin
 Result :=
   "Provider=SQLOLEDB.1;Persist Security Info=False;" +
{$IFDEF WINDOWS_AUTHENTICATION}
   "Integrated Security=SSPI;" +
{$ELSE}
   "User ID=" + AUser + ";" +
   "Password=" + APassword + ";" +
{$ENDIF}
   "Initial Catalog=" + ADatabase + ";" +
   "Data Source=" + AServer;
end;

WINDOWS_AUTHENTICATION, естественно, можно сделать не параметром компиляции, а параметром функции, просто взял с живого проекта.


 
lostdelpher   (2006-02-09 10:00) [6]

Зачем мучить себя создай файл с расширением udl открой его, настрой подключение (по iP или как поэкпериментируй) , сохрани ...Затем открой текстовым редактором и посмотри строку подключения


 
Ega23 ©   (2006-02-09 10:20) [7]

Возможно тут что-то с DNS-ом и "доверительными отношениями". Попробуй вместо имени сервера задать его IP-адрес.


 
Ольга   (2006-02-09 10:33) [8]

Workstation ID и  Data Source - две большие разницы
Согласна с [6] - подключайтесь через UDL (WINDOWS_AUTHENTICATION)


 
_Konstantin   (2006-02-09 23:48) [9]

Последние данные по данной проблеме. Притащил ноутбук с программой в сеть. Создаю строку подключения (кстати она программно и создавалась), дохожу до места где нужно выбрать базу данных и опа - облом...

Пишет вот что:
Ошибка связи с данными (Microsoft)
[DBNETLIB][ConnectionRead(recv()).]Общая ошибка сети. Обратитесь к документации по сети.

а потом

Связь с данными (Microsoft)
Не выполнен вход в систему. Не удаётся загрузить сведения католога

Ничего не понимаю, что происходит... Может есть какие соображения.


 
sniknik ©   (2006-02-10 00:54) [10]

соображение... перечитать ветку и воспользоваться(проверить) уже данные советы... особое внимание на авторизацию (не только в строке но и в свойствах сервера mssql), и на советы по составлению правильной строки конекта.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.032 c
15-1142004365
ZeFiR
2006-03-10 18:26
2006.04.02
eXtreme Notepad


9-1127590578
ILYA_
2005-09-24 23:36
2006.04.02
delphiX help


15-1142150131
Ega23
2006-03-12 10:55
2006.04.02
С Днём рождения! 12 марта


2-1142744184
Фаст
2006-03-19 07:56
2006.04.02
НЕ плавная прокрутка в ListBox. Как её сделать?


2-1142520097
Fenix
2006-03-16 17:41
2006.04.02
Динамически создать ListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский