Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
Программа написана на Delphi 2010. Используется ADO connection (обычное,которое в комплекте к Delphi идет).
SQL Server 2005.
Есть несколько приложений - довольно давно работают с этой БД - все ок. Возникла необходимость написать сервис, работающий с этими же данными.
Так как все приложения построены по схеме - объекты с данными и подключение - отдельно, отображение и интерфейсы отдельно - то и вроде бы проблем никаких быть не должно.. по идее.
Тот же компонент ADOConnection, который работает уже несколько лет (в тех же unit'ах), при запуске из-под сервиса выдал
автор
"Microsoft OLE DB Provider for SQL Server/[DBNETLIB][ConnectionOpen (Connect()).]SQL Server не существует, или доступ запрещен."
Ошибка:2147467259|08001".

Я уже и FAQ читал, и проверял открытость TCP/IP/Named pipes на сервере - все ок, но увы - не подключается. Пинг тоже ессно проходит отлично.
Могу лишь добавить, что в design time ADOConnection компонент подключается к БД нормально, а сам сервис я запускаю от имени пользователя, имеющего права локального администратора на клиентской машине, и имеющего сетевые права, достаточные для подключения к серверу (и права локального админа на сервере тоже).
В поле datasource в connectionstring, кроме самого адреса так же пробовал указывать и порт в явном виде (1433) - увы, облом.
15 мар 13, 16:52    [14053994]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
А приложение работает в домене?
15 мар 13, 17:44    [14054413]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
Да, в домене.
15 мар 13, 17:46    [14054429]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Alexander Zhukov,

Посмотрите логи сервера.
16 мар 13, 02:43    [14056384]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
В логах чисто :( т.е. попыток подключения не замечено (это логи SQL сервера).
18 мар 13, 08:53    [14060938]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
aleks2
Guest
Alexander Zhukov
Есть несколько приложений - довольно давно работают с этой БД - все ок. Возникла необходимость написать сервис, работающий с этими же данными.


1. И под какими учетными данными запущен твой сервис?
2. Разреши сервису "взаимодействовать с десктопом" и запусти-посмотри чо будет.
3. Запусти под "учетными данными сервиса" отладчик Delphi.
18 мар 13, 08:57    [14060954]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
aleks2
Alexander Zhukov
Есть несколько приложений - довольно давно работают с этой БД - все ок. Возникла необходимость написать сервис, работающий с этими же данными.


1. И под какими учетными данными запущен твой сервис?
2. Разреши сервису "взаимодействовать с десктопом" и запусти-посмотри чо будет.
3. Запусти под "учетными данными сервиса" отладчик Delphi.


1.Сервис запускаю под своей учеткой (т.е. под доменной);
2.Счас попробую.
3.В смысле? Я и так сижу с этими же учетными данными - это моя учетка.
18 мар 13, 09:23    [14061011]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
aleks2
Alexander Zhukov
Есть несколько приложений - довольно давно работают с этой БД - все ок. Возникла необходимость написать сервис, работающий с этими же данными.



2. Разреши сервису "взаимодействовать с десктопом" и запусти-посмотри чо будет.


2. Результат абсолютно тот же....
18 мар 13, 10:15    [14061188]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
Alexander Zhukov
2. Результат абсолютно тот же....
И не должен был поменяться.

Ошибка у вас не сиквельная, а клиентская. Так что ищите проблему у себя локально.
1. Убедитесь, что локальный фаервол не блокирует доступ в сеть для сервиса.
2. Подключитесь отладчиком к процессу сервиса и посмотрите реальную строку подключения.
18 мар 13, 10:53    [14061337]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2519
CoInitialize вызывали?

Попробуйте изменить Вашу программу, чтобы ее можно было вызывать и как службу и как обычное приложение. Если получится запустить как приложение, то проблемы в администрировании системы. Если ошибка осталась - проблемы с программой.
18 мар 13, 11:03    [14061380]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
invm
Alexander Zhukov
2. Результат абсолютно тот же....
И не должен был поменяться.

Ошибка у вас не сиквельная, а клиентская. Так что ищите проблему у себя локально.
1. Убедитесь, что локальный фаервол не блокирует доступ в сеть для сервиса.
2. Подключитесь отладчиком к процессу сервиса и посмотрите реальную строку подключения.

1. Файрвол и брандмауер отключены.
2. В процессе (хотя строку я выдаю в LogMessage процелуре).
18 мар 13, 11:20    [14061456]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
Александр Спелицин
CoInitialize вызывали?

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


Эти же units в дельфи используются в нормальных приложениях. Всё работает на ура. (те же dfm с ADOConnection компонентами) и функции, которые их вызывают. Только входные данные (логин/пароль на sql сервер передаются, ну и сами адреса) приходят не от окна ввода пользователя, а считываются из реестра.
18 мар 13, 11:24    [14061474]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
А если начать с элементарного?
На клиентской машине войти под логином сервиса и в Management Studio подключиться к серверу?
18 мар 13, 11:29    [14061498]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
Alexander Zhukov
Только входные данные (логин/пароль на sql сервер передаются, ну и сами адреса) приходят не от окна ввода пользователя, а считываются из реестра.
Ну вот и разбирайтесь какая же в итого получается строка подключения.
18 мар 13, 11:37    [14061522]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
Jovanny
А если начать с элементарного?
На клиентской машине войти под логином сервиса и в Management Studio подключиться к серверу?

Это на ура работает.
18 мар 13, 11:49    [14061582]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
Более того, сделал эксперимент - запустил сервис на самом сервере. С указанием в connectionstring "localhost" как DataSource.
Результат тот же.
18 мар 13, 11:51    [14061594]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
и все таки покажите реальный ADO шнгый коннекшин стринг... чет у вас савсем не чяисто
Олтвите профайлером и покажите ,и сраните его с тем.который прописан в конфигах..чет у вас мутно все
18 мар 13, 12:09    [14061669]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2519
Alexander Zhukov
Александр Спелицин
CoInitialize вызывали?
Попробуйте изменить Вашу программу, чтобы ее можно было вызывать и как службу и как обычное приложение. Если получится запустить как приложение, то проблемы в администрировании системы. Если ошибка осталась - проблемы с программой.

Эти же units в дельфи используются в нормальных приложениях. Всё работает на ура.

Так вот "Нормальные" приложения делают многое сами, а в службах, dll, потоках это нужно делать явно.
В обычном приложении используется объект TApplication, а в службе - TServiceApplication.

TApplication автоматически вызывает CoInitialize только для основного потока приложения. Для других потоков его нужно вызывать явно.
TServiceApplication вряд ли вызывает CoInitialize. К тому же там несколько потоков изначально!!!

Еще раз. Измените Вашу службу так, чтобы она могла работать и как обычное запускаемое приложение. И добейтесь работы именно в этом режиме.
18 мар 13, 12:22    [14061775]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
Alexander Zhukov
Более того, сделал эксперимент - запустил сервис на самом сервере. С указанием в connectionstring "localhost" как DataSource.
Результат тот же.
Зачем гадать и ставить кучу затратных экспериментов, тратить несколько дней на такую ерунду??? Просто перед функцией ADOConnection.Open поставьте запись все паарметров коннекта в какой нибуть лог.
18 мар 13, 12:28    [14061835]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Luc
Member

Откуда: Москва
Сообщений: 85
Создаёте на MS SQL локальное имя входа, присваиваете все необходимые права. Пробиваете эту учётку в ConnectionString.
Или же пробивать в сервис свои учётные данные (Но при смене пароля придётся пробивать снова).
18 мар 13, 13:47    [14062377]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
Maxx
и все таки покажите реальный ADO шнгый коннекшин стринг... чет у вас савсем не чяисто
Олтвите профайлером и покажите ,и сраните его с тем.который прописан в конфигах..чет у вас мутно все


да, надо было - чегой-то стормозил
Provider=SQLOLEDB;Password=xxxxxx;Persist Security Info=True;User ID=yyyyyy;Initial Catalog=serv_alias.domain.ru;Data Source=db_name,1433;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False
18 мар 13, 14:20    [14062593]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Konst_One
Member

Откуда:
Сообщений: 11680
...Initial Catalog=db_name;Data Source=serv_alias,1433;...


может так?
18 мар 13, 14:22    [14062611]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
Александр Спелицин
Alexander Zhukov
пропущено...

Эти же units в дельфи используются в нормальных приложениях. Всё работает на ура.

Так вот "Нормальные" приложения делают многое сами, а в службах, dll, потоках это нужно делать явно.
В обычном приложении используется объект TApplication, а в службе - TServiceApplication.

TApplication автоматически вызывает CoInitialize только для основного потока приложения. Для других потоков его нужно вызывать явно.
TServiceApplication вряд ли вызывает CoInitialize. К тому же там несколько потоков изначально!!!

Еще раз. Измените Вашу службу так, чтобы она могла работать и как обычное запускаемое приложение. И добейтесь работы именно в этом режиме.


Я видимо не совсем понимаю как именно изменить сервис, чтобы он работал как обычное приложение? Он же TService, а надо TApplication. А если имелось в виду чтобы те же куски кода работали - то да, у меня общие юниты для приложения и для сервиса. Физически одни и те же файлы.
18 мар 13, 14:24    [14062627]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Alexander Zhukov,

Conn String
18 мар 13, 14:25    [14062634]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к БД сервисом  [new]
Alexander Zhukov
Member

Откуда:
Сообщений: 13
Konst_One
...Initial Catalog=db_name;Data Source=serv_alias,1433;...


может так?

Пробовал. Изначально (в приложении) было именно так. Но оно не заработало - поэтому по совету сисадминов - вставил туда полный алиас. Правда без особого успеха.
18 мар 13, 14:26    [14062638]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить