Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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
如何在C#中还原SQL Server 2012数据库.bak文件?_C#_Sql Server_Winforms_Login - Fatal编程技术网

如何在C#中还原SQL Server 2012数据库.bak文件?

如何在C#中还原SQL Server 2012数据库.bak文件?,c#,sql-server,winforms,login,C#,Sql Server,Winforms,Login,我在Windows窗体中开发了一个MIS,其中我备份了SQL Server 2012数据库,但无法恢复备份(.bak)文件 这是我的代码: private void buttonRestore_Click(object sender, EventArgs e) { try { openFileDialog1.Filter = "Backup File |*.bak"; if (openFileDialog1.ShowDialog() == Dia

我在Windows窗体中开发了一个MIS,其中我备份了SQL Server 2012数据库,但无法恢复备份(
.bak
)文件

这是我的代码:

private void buttonRestore_Click(object sender, EventArgs e)
{
    try
    {
        openFileDialog1.Filter = "Backup File |*.bak";

        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            string sql = "Alter Database BOQ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;";
            sql += "Restore Database BOQ FROM DISK ='" + openFileDialog1.FileName + "' WITH REPLACE;";

            SqlConnection con = new SqlConnection("Data Source=.; Initial Catalog=BOQ;Integrated Security=True");
            SqlCommand command = new SqlCommand(sql,con);

            con.Open();
            command.ExecuteNonQuery();

            MessageBox.Show("Database Recovered Successfully!");
            con.Close();
            con.Dispose();
        }
    }
    catch (Exception ex) 
    { 
         MessageBox.Show(ex.Message); 
    }
}
但我得到了这个错误:


无法连接到数据库
BOQ
,然后在其上恢复
.bak

"Data Source=.; Initial Catalog=BOQ;Integrated Security=True"
                                ****
您需要连接到
master
数据库,然后您可以恢复
BOQ
数据库:

"Data Source=.; Initial Catalog=master;Integrated Security=True"
                                *******

我知道这是一篇老文章,但我不知道如何先连接到主数据库,然后再连接到要恢复的数据库?澄清一下就好了。Thanks@PeterJ:只需使用我在回答中显示的第二个连接字符串连接到
master
,恢复数据库后,关闭该连接,并使用第一个连接字符串连接到您要使用的实际数据库(以及您刚刚恢复的数据库)哦,好的,这很有意义。万分感谢,马克!