Ошибка в службе Windows vb.net при подключении к SQL - PullRequest
0 голосов
/ 05 августа 2009

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

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

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

Ответы [ 4 ]

0 голосов
/ 05 августа 2009

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

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

0 голосов
/ 05 августа 2009

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

0 голосов
/ 05 августа 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
0 голосов
/ 05 августа 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...