2013-08-27 53 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