问题描述
我有一个C#服务,要求在OS重新启动后关闭之前,将某些文本写入sql Server数据库。因此,服务B
不应在我的服务之前停止,为了实现这一点,我使用命令添加了MSsql$sqlEXPRESS
的依赖项
MSsql$sqlEXPRESS
但是,它似乎不起作用,因为我仍然遇到错误
在尝试写入sc.exe config MyService depend= MSsql$sqlEXPRESS
中的数据库时。有时,该错误是“无效句柄”错误。
我想念什么?另外,OnShutdown()
显示依赖关系,但sc.exe qc MyService
下的依赖关系则什么也不显示。为什么?
解决方法
从文档中
请注意,默认情况下,在服务关闭期间,SCM不会执行 依赖关系。 SCM列举了 运行服务并发送SERVICE_CONTROL_SHUTDOWN命令。 因此,一个服务可能会失败,因为它依赖于另一个服务 已经停止了。
要手动设置服务的关闭顺序,请创建一个多字符串 注册表值,其中包含服务名称的顺序为 应该关闭它们并将其分配给Control键的 PreshutdownOrder值,如下所示:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ PreshutdownOrder =“关闭顺序”