2013-08-26 6 views
0

this 문서를 기반으로 데이터베이스 백업/복원을 위해 작은 WPF 응용 프로그램을 만들었습니다.백업 파일에서 데이터베이스를 복원 할 수 없습니다

코드 : 나는 백업 파일 button1을 클릭하면 예상대로

using System.Windows; 
using Microsoft.SqlServer.Management.Smo; 

namespace DBManager 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow 
    { 
     private Server srv; 
     private Database db; 
     private BackupDeviceItem bdi; 
     private int recoverymod; 

     public MainWindow() 
     { 
      InitializeComponent(); 
      srv = new Server(); 
      db = srv.Databases["MyDB"]; 
      recoverymod = (int) db.DatabaseOptions.RecoveryModel; 
      bdi = new BackupDeviceItem("Test_Full_Backup1", DeviceType.File); 
     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      BackupDB(); 
     } 

     private void button2_Click(object sender, RoutedEventArgs e) 
     { 
      RestoreDB(); 
     } 

     public void BackupDB() 
     { 
      var bk = new Backup 
      { 
       Action = BackupActionType.Database, 
       BackupSetDescription = "Full backup of MyDB", 
       BackupSetName = "MyDB Backup", 
       Database = "MyDB" 
      }; 

      bk.Devices.Add(bdi); 
      bk.Incremental = false; 
      bk.LogTruncation = BackupTruncateLogType.Truncate; 
      bk.SqlBackup(srv); 
      label1.Content = "Backup finished"; 
      bk.Devices.Remove(bdi); 
     } 

     public void RestoreDB() 
     { 
      db.Drop(); 
      var rs = new Restore { NoRecovery = true }; 
      rs.Devices.Add(bdi); 
      rs.Database = "MyDB"; 
      rs.SqlRestore(srv); 
      label1.Content = "Restoration finished"; 
      db = srv.Databases["MyDB"]; 
      rs.Devices.Remove(bdi); 
      db.RecoveryModel = (RecoveryModel) recoverymod; 
     } 
    } 
} 

생성됩니다.

button2를 누르면 "복원 완료"메시지가 표시되고 모든 내용이 정상적으로 보였지만 사용하는 다른 응용 프로그램으로 데이터베이스에 액세스 할 수 없습니다.

SQL Management Studio에서 데이터베이스 이름 뒤에 "복원 중 ..."이 표시되고 복원 프로세스가 완료되지 않는 것처럼 보입니다.

비주얼 스튜디오 2010 및 SQL Server 2012

+0

SQL Server Management Studio라는 도구를 이미 만들었습니다. –

+0

알고 있지만 대부분의 대상 사용자는 기술 스킬이 없습니다 –

+0

기술 사용자가 아닌 사용자가 SQL 데이터베이스를 복원 할 수 있도록 하시겠습니까? 그것은 정말 나쁜 생각처럼 보입니다. –

답변

0

지정한 때문에 데이터베이스가 복구 상태로 남아있다 : ​​

NoRecovery = true 

당신은이 복원이 줄을 변경 한 후 데이터베이스를 복구 할하려면 다음 Comparison of RECOVERY and NORECOVERY 섹션 here에서

NoRecovery = false 

더 많은 정보를 원하시면.

+0

작업 중. 고마워. :) –

관련 문제