Ошибка в службе Windows vb.net при подключении к SQL

Я установил службу Windows vb.net на машине с Windows 2008, которая пытается подключиться к SQL 2005. Служба запускается успешно, но не видит базу данных. В журнале событий есть следующая запись.

Описание для события с кодом 0 из источника SU4.ESMR.DAL.Job.FillPriorityJobByType (oJobDS, TypeID: 3 не может быть найден. Компонент, вызывающий это событие, не установлен на локальном компьютере, либо установка повреждена. Вы можете установить или отремонтируйте компонент на локальном компьютере.

Это было протестировано локально как на XP, так и на 2008. Все среды 32-разрядные.


person Community    schedule 05.08.2009    source источник


Ответы (4)


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

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

person rjrapson    schedule 05.08.2009

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

person Scott    schedule 05.08.2009

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

Для этого сначала добавьте эту строку в код запуска вашего сервиса:

AddHandler Application.ThreadException, AddressOf LogException

Затем создайте процедуру регистрации:

Private Sub LogException(ByVal sender As Object, _
                         ByVal e As System.Threading.ThreadExceptionEventArgs)
    'This method will be called by any unhandled managed exception, assuming 
    'that a debugger isn’t attached. You should log the exception here.
End Sub
person HTTP 410    schedule 05.08.2009

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

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

person Justin    schedule 05.08.2009