连接到SQL时,vb.net Windows服务出错

时间:2009-08-05 12:07:56

标签: windows vb.net service

我在Windows 2008计算机上安装了一个vb.net Windows服务,它尝试连接到SQL 2005.该服务成功启动,但无法查看数据库。事件日志包含以下条目。

来自源SU4.ESMR.DAL.Job.FillPriorityJobByType的事件ID 0的描述(无法找到oJobDS,TypeID:3。引发此事件的组件未安装在本地计算机上或安装已损坏。您可以在本地计算机上安装或修复该组件。

这在XP和2008上进行了本地测试。所有环境都是32位。

4 个答案:

答案 0 :(得分:0)

此处没有太多内容,但听起来像服务帐户没有数据库所需的访问权限。

如果您安装了要在网络服务或本地下运行的服务,请在有权访问数据库的服务器上创建一个帐户,并将其更改为使用该服务。

答案 1 :(得分:0)

这听起来像是一个安全问题。我会检查服务用于连接到sql的帐户的权限。

答案 2 :(得分:0)

可能存在与此事件关联的未处理的托管异常。如果事件日志中没有显示有关该异常的详细信息,则可以创建一个最后机会过滤器,拦截任何未处理的异常,然后将其记录到您希望的任何位置。

为此,请先在服务启动代码中添加此行:

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

答案 3 :(得分:0)

默认情况下,Windows服务在本地系统帐户下运行,您可以通过查看服务MMC管理单元中服务的“登录”选项卡来查看。该帐户可能没有您的数据库的权限。

您可以让服务在不同的帐户下运行(您可能希望尝试自行运行该服务以查看是否可以解决问题),但您应该更改本地系统帐户的权限以授予其访问权限