代码之家  ›  专栏  ›  技术社区  ›  Sai

如何恢复SQL Server 2012数据库?

  •  1
  • Sai  · 技术社区  · 6 年前

    如何从SQL Server 2012恢复数据库?

    这是我的代码:

    private void [connTes()][1]
    {
            try
            {
                conString = "server=.\\SQLEXPRESS;database=db_datatestproject;user=admin;password=123;Integrated Security=True";
                connnn = new SqlConnection(conString);
                connnn.Open();
            }
            catch
            {
            }
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
            connTes();
    
            try
            {
                if (txtlocation.Text == "")
                {
                    MessageBox.Show("select database");
                    return;
                }
                else
                {
                    string databesing = connnn.Database.ToString();
                    string a = "ALTER DATABASE " + databesing + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE;";
                    a += "RESTORE DATABASE "+databesing+" FROM DISK ='"+txtlocation.Text+"' WITH REPLACE;";
    
                    SqlCommand cmd = new SqlCommand(a, connnn);
                    SqlDataReader dr = cmd.ExecuteReader();
                    connnn.Close();
                    connnn.Dispose();
    
                    MessageBox.Show("done restored");
                }
            }
            catch(SqlException ex)
            {
                MessageBox.Show(ex.ToString());
            }
    }
    

    这就是我得到的错误:

    还原无法处理数据库“db_testproject”,因为会话正在使用它。建议在执行此操作时使用主数据库。还原数据库正在异常终止。

    如何修复此错误?

    非常感谢您的帮助。

    非常感谢。

    1 回复  |  直到 3 年前
        1
  •  2
  •   Mitch Wheat    6 年前

    添加

    USE MASTER; 
    GO
    

    以启动TSQL restore命令。

    您需要在另一个数据库中,而不是要恢复的数据库中。

    还请注意@marc_的评论:“因为你没有从中得到任何数据 SqlCommand 使用 ExecuteNonQuery() 而不是 ExecuteReader() "