具有依赖关系的 Windows 服务的关闭顺序 [关闭]
Posted
技术标签:
【中文标题】具有依赖关系的 Windows 服务的关闭顺序 [关闭]【英文标题】:Order of shutdown of Windows services with dependencies [closed] 【发布时间】:2021-02-20 20:12:59 【问题描述】:我有一个 C# 服务,它需要在操作系统重新启动后关闭之前将特定文本写入 SQL Server 数据库。所以服务MSSQL$SQLEXPRESS
不应该在我的服务之前停止,为了实现这一点,我使用命令添加了MSSQL$SQLEXPRESS
的依赖项
sc.exe config MyService depend= MSSQL$SQLEXPRESS
但是,它似乎不起作用,因为我仍然收到错误
正在关机。 用户“user”登录失败。 无法继续执行,因为会话处于终止状态
尝试写入OnShutdown()
中的数据库时。有时错误是“无效句柄”错误..
我错过了什么?此外,sc.exe qc MyService
显示依赖关系,但 services.msc
下的依赖关系不显示任何内容。为什么?
【问题讨论】:
这与编程无关;如果您询问服务器管理,它会出现,您应该在Server Fault。 管理服务依赖是开发和部署服务的一部分,所以它是 SO 的主题。 【参考方案1】:来自文档:
请注意,在服务关闭期间,默认情况下,单片机不会占用 考虑到依赖关系。 SCM 枚举列表 运行服务并发送 SERVICE_CONTROL_SHUTDOWN 命令。 因此,一个服务可能会失败,因为它依赖于另一个服务 已经停止了。
要手动设置服务的关闭顺序,请创建一个多字符串 包含服务名称的注册表值,其中的顺序 他们应该被关闭并将其分配给控制键的 PreshutdownOrder 值,如下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PreshutdownOrder="关机顺序"
Service Control Handler Function
【讨论】:
以上是关于具有依赖关系的 Windows 服务的关闭顺序 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
golang 一个简单的golang Web服务器,具有基本的日志记录,跟踪,运行状况检查,正常关闭和零依赖关系
golang 一个简单的golang Web服务器,具有基本的日志记录,跟踪,运行状况检查,正常关闭和零依赖关系