восстановление базы данных прекращается ненормально.изменил контекст базы данных на «мастер» в c # - PullRequest
0 голосов
/ 02 мая 2019

Я создал базу данных в SQL SERVER 2008 R2 edition.В C # я написал код для резервного копирования и восстановления.Код работает нормально с того же компьютера и того же сервера.Но это дает ошибку на другом ПК с тем же именем сервера.ошибка «восстановление базы данных прекращается ненормально. изменен контекст базы данных на« master »в c #» ниже мой код ..

резервный код: -

 private void Home_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (!Directory.Exists(@"D:\\DBBackup"))
        {
            Directory.CreateDirectory(@"D:\\DBBackup");
        }
        string database = con.Database.ToString();
       try
        {

        string cmd = "BACKUP DATABASE [" + database + "] TO DISK='d:\\DBBackup\\" + database + "-" + DateTime.Now.ToString("dd-MM-yyyy--HH-mm-ss") + ".bak'";

        using(SqlCommand command = new SqlCommand(cmd,con))
        {
            if(con.State!=ConnectionState.Open)
            {
                con.Open();
            }
            command.ExecuteNonQuery();
            con.Close();
            MessageBox.Show("Database Backup Done Successefully");

        }


    }
    catch(Exception ex)
   {
       MessageBox.Show(ex.Message);
   }
}

код восстановления: -

private void button2_Click(object sender, EventArgs e)
    {
        //this.openFileDialog1.Filter = "*.bak";
        openFileDialog1.ShowDialog();
        string path = openFileDialog1.FileName;
        string database = con.Database.ToString();
        if (con.State != ConnectionState.Open)
        {
            con.Open();
        }
        try
        {
            string sqlStmt2 = string.Format("ALTER DATABASE [" + database + "] SET MULTI_USER WITH ROLLBACK IMMEDIATE");
            SqlCommand bu2 = new SqlCommand(sqlStmt2, con);
            bu2.ExecuteNonQuery();

            string sqlStmt3 = "USE MASTER RESTORE DATABASE [" + database + "] FROM DISK='" + path + "'WITH REPLACE;";
            SqlCommand bu3 = new SqlCommand(sqlStmt3, con);
            bu3.ExecuteNonQuery();

            string sqlStmt4 = string.Format("ALTER DATABASE [" + database + "] SET MULTI_USER");
            SqlCommand bu4 = new SqlCommand(sqlStmt4, con);
            bu4.ExecuteNonQuery();

            MessageBox.Show("database restoration done successefully");

            con.Close();
            SqlCommand cmd = new SqlCommand("update DBBK Set Details='" + path + "' where DBNAME='" + database + "' ", bkcon);
            bkcon.Open();
            cmd.ExecuteNonQuery();
            bkcon.Close();


        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
...