5

Senaryo Bu oturum tarafından kullanılıyor çünkü olamaz: iyi gidiyor C# pencere üzerinde çalışıyorumHata: RESTORE işlemi veritabanı 'Test_DB' o

SQL Server 2008 R2 veritabanı server.All şeylerle uygulamayı oluşturan hatta ben veri tabanı yedeklemesi oluşturabiliyorum ama bunu pro-dilbilgisel olarak geri yüklediğimde bana hata veriyor "RESTORE veritabanı 'Test_DB'yi işleyemiyor çünkü bu oturum tarafından kullanılıyor. Bu işlem gerçekleştirilirken ana veritabanının kullanılması önerilir." RESTORE DATABASE, anormal olarak sona eriyor. " burada herhangi vücut tarafından sağlanan herhangi bir yardım takdir benim yedekleme için bir program ve geri yükleme

  // back up code 

     try 
     { 
      SaveFileDialog sd = new SaveFileDialog(); 
      sd.Filter = "SQL Server database backup files|*.bak"; 
      sd.Title = "Create Database Backup"; 


      if (sd.ShowDialog() == DialogResult.OK) 
      { 
       using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString)) 
       { 

        string sqlStmt = string.Format("backup database Test_DB to disk='{0}'", sd.FileName); 
        using (SqlCommand bu2 = new SqlCommand(sqlStmt, conn)) 
        { 
         conn.Open(); 
         bu2.ExecuteNonQuery(); 
         conn.Close(); 

         DevComponents.DotNetBar.MessageBoxEx.Show("Backup Created Sucessfully"); 
        } 

       } 
      } 
     } 

     catch (Exception) 
     { 
      MessageBox.Show("Backup Not Created"); 
     } 
// Restore backup Code 


     try 
     { 
      OpenFileDialog od = new OpenFileDialog(); 
      od.Filter = "SQL Server database Restore files|*.bak"; 
      od.Title = "Restore Database Backup"; 


      if (od.ShowDialog() == DialogResult.OK) 
      { 
       using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString)) 
       { 
         string sqlStmt = string.Format("Restore database Test_DB from disk='{0}'", od.FileName); 
         using (SqlCommand bu2 = new SqlCommand(sqlStmt, conn)) 
         { 
          conn.Open(); 
          bu2.ExecuteNonQuery(); 
          conn.Close(); 
          DevComponents.DotNetBar.MessageBoxEx.Show("Database Retored Sucessfully", "Success Message!"); 
         } 

       } 
      } 
     } 

     catch (Exception) 
     { 
      MessageBox.Show("Database didn't Restore","Error Message!"); 
     } 

olduğunu. Teşekkürler.

cevap

5

Hata mesajı kendiliğinden açıklayıcıdır. Bağlantı dizginizi değiştirmeniz gerekiyor ki initial catalog=test_db yerine initial_catalog=master diyor. Veya geri yükleme işlemini çalıştırmadan önce veritabanı içeriğini usta olarak değiştirin.

2
// Restore backup Code 


     try 
     { 
      OpenFileDialog od = new OpenFileDialog(); 
      od.Filter = "SQL Server database Restore files|*.bak"; 
      od.Title = "Restore Database Backup"; 


      if (od.ShowDialog() == DialogResult.OK) 
      { 
       using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString)) 
       { 
         conn.Open(); 
         string UseMaster = "USE master"; 
         SqlCommand UseMasterCommand = new SqlCommand(UseMaster, conn); 
         UseMasterCommand.ExecuteNonQuery(); 

         string Alter1 = @"ALTER DATABASE [Test_DB] SET Single_User WITH Rollback Immediate"; 
         SqlCommand Alter1Cmd = new SqlCommand(Alter1, conn); 
         Alter1Cmd.ExecuteNonQuery(); 

         string Restore = string.Format("Restore database Test_DB from disk='{0}'", od.FileName); 
         SqlCommand RestoreCmd = new SqlCommand(Restore, conn); 
         RestoreCmd.ExecuteNonQuery(); 

         string Alter2 = @"ALTER DATABASE [Test_DB] SET Multi_User"; 
         SqlCommand Alter2Cmd = new SqlCommand(Alter2, conn); 
         Alter2Cmd.ExecuteNonQuery(); 
         conn.Close(); 
          DevComponents.DotNetBar.MessageBoxEx.Show("Database Retored Sucessfully", "Success Message!"); 

       } 
      } 
     } 

     catch (Exception) 
     { 
      MessageBox.Show("Database didn't Restore", "Error Message!"); 
     }