如何在C#中恢复一个SQL Server 2012数据库的.bak文件?

7

我开发了一个Windows Forms中的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); 
    }
}

但是我收到了这个错误: 在这里输入图片描述
1个回答

12

如果您连接到数据库BOQ,则不能在其上还原.bak文件!

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

您需要连接到master数据库,然后才能恢复您的BOQ数据库:

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

我知道这是一篇旧帖子,但我无法弄清楚如何首先连接到主数据库,然后再连接到要恢复的数据库?能否提供一些澄清的解释?谢谢。 - PeterJ
1
@PeterJ:只需使用我在答案中展示的第二个连接字符串连接到master,并在恢复数据库完成后关闭该连接,然后使用第一个连接字符串连接到您想要使用的实际数据库(即您刚刚恢复的数据库)。 - marc_s
哦,好的,那很有道理。非常感谢你,marc_s! - PeterJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接