2013-08-27 84 views
1

我必須使用asp.net mvc 4和實體框架實現管理Web過程。從實體框架連接恢復數據庫

在這個過程中,我讓用戶執行一些sql服務器數據庫的備份和恢復。

我沒有備份過程的問題,但我在還原過程中遇到了一些問題。

我認爲一個好的SQL命令序列是這樣的:

"ALTER DATABASE [" + prj.Denominazione_Db + "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE" 

"RESTORE DATABASE [" + prj.Denominazione_Db + "] FROM DISK = '" + fileDaRestorare +"'" 

"ALTER DATABASE [" + prj.Denominazione_Db + "] SET MULTI_USER" 

"GO" 

我設置數據庫以單用戶模式,恢復,並在多用戶模式復位。 我已經使用實體框架連接做了一些實驗,但我收到一些例外,如 我不能在多命令語句中使用alter database命令 或 無法在事務內調用alter database命令。

如果我嘗試執行直接恢復,則收到無法在事務內執行恢復的消息。

你知道我可以使用實體框架連接調用這個命令序列嗎?

感謝, 盧卡

+0

你應該以一個「使用tempdb」開始的任何方式。我會很驚訝,如果你可以恢復連接的數據庫 – tschmit007

+0

你嘗試過使用(TransactionScope trans = new TransactionScope(TransactionScopeOption.Suppress)){}' – tschmit007

回答

0

我建議你不要使用EF進行恢復。 即使訪問Context.Database。可以觸發你不期待的活動。 如 opened/closed connection ? and EF

建議你閱讀 Context database class 你決定在這個解決方案之前。

我故意不使用EF這樣的DB行動只有

SqlConnectionFactory 
SqlConnection 
SqlCommand