2013-09-30 20 views
0

當我需要啓動應用程序時,我有一個數據庫備份文件我想在數據庫部分恢復時顯示警告。檢測當前數據庫已部分恢復

我如何可以檢測/識別當前數據庫恢復與全部或部分模式C#。

+1

「*部分恢復*」是什麼意思? – RBarryYoung

+0

簡單恢復模型沒有流式文件的數據庫。 http://technet.microsoft.com/en-us/library/ms190388.aspx –

回答

0

我已經找到一種方法來解決這個問題感謝所有幫助!

var restoreType = dbContext.Database.SqlQuery<string>(@"Select restore_type FROM [msdb].[dbo].[restorehistory]").FirstOrDefault<string>(); 

這樣,我會retrive恢復數據庫類型: - 如果RESTORETYPE =「d」比數據庫是完全恢復了! - 否則如果「F」比我知道數據庫已部分恢復!

這從的DbContext EF如果你使用的是其他類型的連接,你可以只使用T-SQL語句。

1

用戶將無法連接到數據庫,如果數據庫是不是AccessReady/ONLINE。 您與數據庫服務器建立的原始連接確保連接到系統數據庫。主/ MSDB/TEMPDB等...之後,您將需要一個存儲過程安裝在這個系統數據庫中的一個,您可以從應用程序調用重複讓每5秒說,如果您的數據庫重新訪問或不。 你的過程就需要這個簡單的查詢

IF EXISTS(SELECT TOP 11 FROM sys.databases中 其中name = '你的DB名稱' 和state_desc = '在線' )

SELECT 'DB is ready to Access' 

ELSE 選擇「DB還沒有準備好進入」

+0

是的,但我有用戶可以連接到數據庫的用例。他只是部分恢復數據庫而不刪除舊數據庫,所以他擁有所有數據,但在這種情況下我需要顯示警告,同時感謝 –

+1

嗯,我不知道所有可能的情況下,您可以將此代碼,但您得到點。無論何時您希望用戶收到警告消息,您都需要在代碼中找到一個安全的地方,以便您可以進行此類調用以檢測DATABASE是否已準備就緒。您也可以根據您從第一次失敗時獲得的錯誤觸發此調用。 –