2015-04-03 31 views
0

我有一个脚本,它定期运行nbackup工具进行数据库备份。我注意到如果在nbackup运行时重新启动Windows,数据库将以“备份锁定”状态结束。有没有可能强制Windows不杀死nbackup进程?当nbackup正在备份数据库时,防止Windows关机

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

我希望不基于WinForms的解决方案。或者,如果确认应用程序按照其开始顺序关闭,我将不胜感激。因此,如果我的guiless进程是从WindowsForms应用程序启动的,它将不会被杀死,如果WindowsForms应用程序将取消设置为true。

+0

可能重复的[C#取消Windows关机](http://stackoverflow.com/questions/17720587/c-sharp-cancel-windows-shutdown) – CodeCaster 2015-04-03 14:40:38

+0

不真正重复。如果可能的话,我不会使用WInformApp来防止Windows关闭。此外,如果我使用WinForm应用程序作为脚本的主机,我需要确保此WIndowsApp启动的进程不会被终止。这不是关于停止WinForm应用程序的关闭。这更重要的是防止在运行失败进程时关闭。 – user2126375 2015-04-03 14:57:35

+0

Windows没有“随机应用程序X正在运行时阻止Windows关闭”的设置,因此您必须自己编码或使用它。也许问Nbackup的支持? – CodeCaster 2015-04-03 14:59:08

回答

0

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

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

这种方法有一个很大的优势 - 即使在备份过程中断电,它也能正常工作。

0

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

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

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

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

+0

是的,脚本可以在备份操作之前开始“关闭阻止应用程序”并在备份操作之后关闭它。不过,您的解决方案会带来第三方软件依赖性,我想避免这种情况。尽管如此,最有希望的似乎是在我自己的WinForms应用程序中托管脚本,就像我在我的问题中写的一样。 – user2126375 2015-04-06 09:36:29