Sql server 在实体框架中恢复SQL Server数据库
我用这个命令备份数据库Sql server 在实体框架中恢复SQL Server数据库,sql-server,wpf,entity-framework,Sql Server,Wpf,Entity Framework,我用这个命令备份数据库 <add name="WindingContext" connectionString="Data Source=.;Initial Catalog=Winding;Integrated Security=True;" providerName="System.Data.SqlClient" /> 当您尝试还原的数据库是默认数据库时,会发生此错误。 转到安全>登录>您的登录用户。单击鼠标右键并选择“属性”。将默认数据库更新为maste
<add name="WindingContext"
connectionString="Data Source=.;Initial Catalog=Winding;Integrated Security=True;"
providerName="System.Data.SqlClient" />
当您尝试还原的数据库是默认数据库时,会发生此错误。
转到安全>登录>您的登录用户。单击鼠标右键并选择“属性”。将默认数据库更新为master。您有两个不同的连接字符串。一个来自代码,一个来自App.Config 您必须确保在这两个地方都没有提到必须恢复的数据库。否则,您与该数据库的连接处于活动状态,恢复将中止
<add name="WindingContext"
connectionString="Data Source=.YOUR-COMPUTER\INSTANCE-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:\Temp\Test\Test123.bak");
Console.Read();
Restore(@"C:\Temp\Test\Test123.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();
}
}
类程序
{
私有静态主实体_db;
静态void Main(字符串[]参数)
{
_db=新的主实体();
尝试
{
备份(@“C:\Temp\Test\Test123.bak”);
Console.Read();
还原(@“C:\Temp\Test\Test123.bak”);
}
捕获(例外e)
{
控制台写入线(e);
}
Console.Read();
}
静态无效备份(字符串文件路径)
{
var命令=@“备份数据库测试”
到磁盘=“+filePath+”;
var list=_db.Database.SqlQuery(command.ToList();
_db.SaveChanges();
}
静态无效还原(字符串文件路径)
{
var command=“从磁盘还原数据库测试=”+文件路径+
“'带替换,名词加载,统计=10”;
var list=_db.Database.SqlQuery(command.ToList();
_db.SaveChanges();
}
}
在连接字符串中尝试此操作:Initial Catalog=master将命令和“USE master;”包装到一个事务中。@Jimbot,请参阅更新。我更改了成本计算,但出现错误。可能,在备份之前尝试使数据库脱机,在恢复之后尝试使数据库联机。不确定,但它可能会断开阻止您备份的用户的连接。
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();
}
<add name="WindingContext"
connectionString="Data Source=.YOUR-COMPUTER\INSTANCE-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:\Temp\Test\Test123.bak");
Console.Read();
Restore(@"C:\Temp\Test\Test123.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();
}
}