在实体框架中还原 SQL Server 数据库



>我用这个命令备份数据库

<add name="WindingContext" 
connectionString="Data Source=.;Initial Catalog=Winding;Integrated Security=True;" 
providerName="System.Data.SqlClient" />

视图中的模型

WindingContext _db = new WindingContext();
BackupCommand = new RelayCommand(() =>
{
string command = @"BACKUP DATABASE Winding
TO DISK = '" + FilePath + "'";
_db.Database.SqlQuery<List<string>>(command).ToList();}

并在恢复视图模型中。

RestoreCommand = new RelayCommand(() =>
{
var command = "RESTORE DATABASE Winding FROM DISK = '"+FilePath+
"' WITH REPLACE, NOUNLOAD,  STATS = 10";
_db.Database.SqlQuery<List<string>>(command).ToList();}

但我收到一个错误:

RESTORE 无法处理数据库"绕线",因为它正由此会话使用。建议在执行此操作时使用 master 数据库。
还原数据库正在异常终止。

更新

我使用此代码但出现错误

SqlConnection connection = new SqlConnection("Data Source=.;Initial Catalog=Master;Integrated Security=True;");
SqlCommand cmd = new SqlCommand(@" Restore Database Winding From Disk='" + FilePath + "'", connection);
try
{
cmd.Connection.Open();
cmd.ExecuteNonQuery(); 
}

当您尝试还原的数据库是默认数据库时,会发生此错误。
转到登录>安全>登录。右键单击并选择属性。将默认数据库更新为主数据库。

您有两个不同的连接字符串。一个来自代码,一个来自 App.Config。

您必须确保在这两个地方都没有提到必须还原的数据库。否则,您具有与该数据库的活动连接,并且还原将中止。

<add name="WindingContext" 
connectionString="Data Source=.YOUR-COMPUTERINSTANCE-OF-DATABASE; Integrated Security=True;" 
providerName="System.Data.SqlClient" />  // REMOVED Catalog=Wind...

刚刚用这个测试,它起作用了:

class Program
{
private static masterEntities _db;
static void Main(string[] args)
{
_db = new masterEntities();
try
{
Backup(@"C:TempTestTest123.bak");
Console.Read();
Restore(@"C:TempTestTest123.bak");
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.Read();
}
static void Backup(string filePath)
{
var command = @"BACKUP DATABASE Test
TO DISK = '" + filePath + "'";
var list = _db.Database.SqlQuery<List<string>>(command).ToList();
_db.SaveChanges();
}
static void Restore(string filePath)
{
var command = "RESTORE DATABASE Test FROM DISK = '" + filePath +
"' WITH REPLACE, NOUNLOAD,  STATS = 10";
var list = _db.Database.SqlQuery<List<string>>(command).ToList();
_db.SaveChanges();
}
}

最新更新