Zon-cpp Ответов: 1

Служба Winodw не может открыть базу данных


Привет почему
CDatabase
не удается открыть службу окон во время выполнения?(это оконный сервис VC++ )

CString sConnectionString = L"ODBC;DSN=MyDB;Trusted_Connection=Yes";
CDatabase db;
db.SetLoginTimeout(8000);
db.SetQueryTimeout(8000);
db.Open( NULL, 0, 0, sConnectionString );


Если этот exe-файл запускается как консольное приложение , база данных открывается справа . Но когда он работает как служба окон в диспетчере служб, он не может открыть базу данных!!!
пожалуйста, помогите мне!

Что я уже пробовал:

why winodw service cann't open Database? (CDatabase.Open())

MadMyche

Есть ли ошибка, когда он пытается подключиться? Когда вы используете Trusted_Connection, вам нужно знать, какие учетные данные использует версия "службы"

Richard Deeming

Настроен ли "MyDB" как "пользовательский DSN" или "системный DSN"?

Zon-cpp

это как пользовательский DSN
Я думаю, что у моей windows есть проблема с установкой "входа в учетную запись" для служб. Я не могу установить учетную запись для своей службы. У него есть ошибка "отказано в доступе"!

Richard Deeming

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

Попробуйте вместо этого настроить его как системный DSN.

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Вероятно, это связано с тем, что вы используете доверенное соединение в своей строке подключения.

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

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

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

Вероятно, вам придется создать учетную запись на SQL Server специально для этой базы данных.