具有依赖关系的 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服务器,具有基本的日志记录,跟踪,运行状况检查,正常关闭和零依赖关系

在 Windows 下打包具有依赖关系的应用程序

phpunit跳过具有不同测试用例之间依赖关系的测试

windows无法启动server服务(位于本地计算机上)错误1068;依赖服务或组无法启动

windows无法启动server服务(位于本地计算机上)错误1068;依赖服务或组无法启动