我在Windows 2008计算机上安装了一个vb.net Windows服务,它尝试连接到SQL 2005.该服务成功启动,但无法查看数据库。事件日志包含以下条目。
来自源SU4.ESMR.DAL.Job.FillPriorityJobByType的事件ID 0的描述(无法找到oJobDS,TypeID:3。引发此事件的组件未安装在本地计算机上或安装已损坏。您可以在本地计算机上安装或修复该组件。
这在XP和2008上进行了本地测试。所有环境都是32位。
答案 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管理单元中服务的“登录”选项卡来查看。该帐户可能没有您的数据库的权限。
您可以让服务在不同的帐户下运行(您可能希望尝试自行运行该服务以查看是否可以解决问题),但您应该更改本地系统帐户的权限以授予其访问权限