2015-04-03 33 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