【问题标题】:Prevent Windows shutdown when nbackup is backuping database当 nbackup 正在备份数据库时防止 Windows 关闭
【发布时间】:2015-04-03 14:35:36
【问题描述】:

我有脚本定期运行 nbackup 工具进行数据库备份。我注意到如果在 nbackup 运行时重新启动 Windows,数据库最终会处于“备份锁定”状态。是否有可能强制 Windows 不终止 nbackup 进程?

我注意到,如果我从 WindowsForm 应用程序运行 nbackup,在 FormClosing 事件中阻止 Windows 关闭,nbackup 进程会成功完成。但是我可以依赖观察到的行为,即进程在启动时按顺序停止/终止吗?

我会欣赏不基于 WinForms 的解决方案。或者,我希望确认应用程序按启动顺序关闭。因此,如果我的 guiless 进程是从 WindowsForms 应用程序启动的,如果 WindowsForms 应用程序将 Cancel 设置为 true,它将不会被杀死。

【问题讨论】:

  • C# Cancel Windows Shutdown 的可能重复项
  • 没有真正复制。如果可能的话,我不会使用 WInformApp 来防止 Windows 关机。此外,如果我使用 WinForm 应用程序作为脚本的主机,我需要确保由此 WIndowsApp 启动的进程不会被终止。这不是关于停止 WinForm 应用程序的关闭。这更多是关于在 guiless 进程运行时防止关闭。
  • Windows 没有设置“在随机应用程序 X 运行时防止 Windows 关闭”,因此您必须自己编写代码或使用它。或许可以向 Nbackup 寻求支持?
  • 我认为您无法停止关机,但您可以(通过工作)发现 Windows 正在请求关机,然后您的程序可以中止备份并重置数据库状态。

标签: .net windows winforms


【解决方案1】:

您可以使用外部应用程序来防止在备份运行时关闭(而不是通过代码执行此操作)。

我推荐这里列出的 4 种工具之一:

4 Tools to Prevent, Cancel and Abort a Windows System Shutdown or Restart when Applications are Running

我希望它能解决你的问题。

【讨论】:

  • 是的,脚本可以在备份操作之前启动“关闭阻止应用程序”并在备份操作之后关闭它。但是,您的解决方案带来了我想避免的第 3 方软件依赖。正如我在我的问题中所写的那样,似乎最有希望的似乎是在我自己的 WinForms 应用程序中托管脚本。
【解决方案2】:

没有真正的防弹解决方案。最好的解决方案是让 Windows 正常关闭,并在下次 Windows 启动时从终止的备份操作中恢复。

这意味着在下次 Windows 启动时执行以下操作:检查数据库是否因备份终止而被锁定。如果是,请解锁数据库并再次运行备份过程。

这种方法有一个很大的优势——即使在备份期间断电也能正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-23
    • 2010-11-02
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多