Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在实体框架中恢复SQL Server数据库_Sql Server_Wpf_Entity Framework - Fatal编程技术网

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();
    }
}