5

Scenario:Errore: RESTORE non può banca dati di processo 'TEST_DB' perché è in uso da parte di questa sessione

Sto lavorando su C# Windows Form applicazione con le cose database SQL Server 2008 R2 server.all stanno andando bene, anche io Sono in grado di creare il backup del database ma quando lo ripristino in modo pro grammatico mi dà l'errore "RESTORE non può elaborare il database 'Test_DB' perché è in uso da questa sessione Si consiglia di utilizzare il database master quando si esegue questa operazione RESTORE DATABASE sta terminando in modo anomalo. " qui è il mio programma per il backup e il ripristino

  // 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!"); 
     } 

Apprezzo tutto l'aiuto fornito da qualsiasi organismo. Grazie.

risposta

5

Il messaggio di errore è auto-esplicativo. È necessario modificare la stringa di connessione in modo che invece di initial catalog=test_db si dice initial_catalog=master. O cambiare il contesto del database da padroneggiare prima di eseguire il ripristino.

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!"); 
     } 
Problemi correlati