Я пытаюсь написать сервис в CBuilder 6 (цель XP Pro). Частью работы этой службы является мониторинг и обновление таблицы в базе данных. Мы используем прямой ODBC для подключения к базе данных, но проблема возникает и с ADO, поэтому мы будем использовать это для простоты.
Вы можете увидеть мой код ниже. Это вызывается из функции, которая выполняется в событии ServiceStart.
Моя проблема в том, что я не могу установить соединение. Наша база данных MSSQL использует проверку подлинности домена, поэтому я попытался запустить службу, используя мою учетную запись домена. Я также попытался явно указать мой домен \ имя пользователя и пароль, но это тоже не работает (в свойствах службы войдите на вкладку).
Может ли кто-нибудь помочь мне с этим? Все ценится.
Другой вопрос, который у меня возникает, - как отладить сервис? У меня установлен удаленный отладчик. Я порождаю процесс, используя что-то вроде rundll32.exe или что-то еще? Опять же, любую помощь оцените.
Большое спасибо заранее
Stu.
Фрагмент кода:
TADOConnection* DB = new TADOConnection(this);
try
{
DB->ConnectionString = "Provider=MSDASQL.1;Password=password;Persist Security Info=True;User ID=usernamej;Data Source=datasource";
DB->Connected = true;
returnValue = DB->Connected;
ShowMessage("Connected");
}
catch (Exception &exception)
{
ShowMessage("Not COnnected");
}
Примечания. Свойство connectionstring является только ориентировочным, в нем были изменены имя пользователя, пароль и база данных. Использование этой строки в автономном приложении приводит к неизменно успешному соединению, и данные могут быть получены с помощью запроса.
В ответ на JP:
Привет, JP.
Спасибо за ваш комментарий. Я на самом деле не получаю исключение здесь (что странно). Я изменил код (см. Ниже), добавив в него еще несколько msgbox, и единственное, что я вижу, это первое - попытка подключения.
ShowMessage("Attempting Login");
TADOConnection* DB = new TADOConnection(NULL);
try {
ShowMessage("1");
DB->ConnectionString = "<as before>";
ShowMessage("2");
DB->Connected = true;
ShowMessage("Connected");
} catch (Exception &exception) {
ShowMessage(exception.Message);
ShowMessage("Not COnnected");
}
Есть идеи? Я не понимаю, почему компонент соединения даже не создается (обратите внимание, что я попытался сменить владельца с этого на NULL, просто чтобы посмотреть, что произойдет).
Спасибо!
Stu.