2011-05-24 117 views
1

我在做一個應用程序,我想給一個按鈕來創建用戶所需位置的數據庫備份;就像我們將任何文件保存在計算機上的任何目標位置,以及一個按鈕來恢復整個數據庫的備份。如何完成這項任務?如何使用winform創建和恢復數據庫的備份?

我通過這段代碼進行備份:

SqlCommand cmd = new SqlCommand(@"backup database StockDB to disk ='d:\StockDBBackUp1.bak' with init,stats=10", ConnectionClass.OpenConnection()); 
cmd.ExecuteNonQuery(); 

現在,如果我給一個文件夾名稱d:\Backup\StockDBBackUp1.bak那麼就應該檢查是文件夾是存在的了。如果不是,那麼它應該創建該文件夾並創建備份。

+0

先生,我如何創建SQL Server備份的一個winform數據?我可以做備份嗎? – 2013-01-26 17:01:51

回答

2

可以使用System.IO功能來完成創建目錄:

if (!Directory.Exists(@"D:\Backup")) 
    Directory.CreateDirectory(@"D:\Backup"); 
+0

如何在主數據庫中恢復備份? – avirk 2011-05-24 17:28:53

+2

查看[RESTORE命令](http://msdn.microsoft.com/zh-cn/library/ms186858%28v=SQL.105%29.aspx)。但是,我會建議使用SMO來備份/恢復您的數據庫。 [見本文](http://www.codeproject.com/KB/database/SQL_Server_2005_Database.aspx)爲例。 – Druid 2011-05-24 17:33:19

+0

先生我可以備份sql server的數據。我使用c#和winform我想用戶備份他的數據庫,所以我可以做備份? – 2013-01-26 17:02:34

0
private void button11_Click(object sender, EventArgs e) 
    { 
      DateTime PD = new DateTime(DateTime.Today); 
      saveFileDialog1.FileName = PD.ToString("yyyy-MM-dd"); 
      saveFileDialog1.Filter = " files|*.bak;*.BAK"; 
      saveFileDialog1.InitialDirectory = "d:"; 
      if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
      { 
       try 
       { 
        string path = string.Empty; 
        path = saveFileDialog1.FileName; 

        path = path.Replace("\\", "//"); 
        bool bBackUpStatus = true; 
        Cursor.Current = Cursors.WaitCursor; 
        if (System.IO.File.Exists(path)) 
        { 
         if (MessageBox.Show(@"do you want a new one?", "the file is existing", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
         { 
          System.IO.File.Delete(path); 
         } 
         else 
          bBackUpStatus = false; 
        } 
        if (bBackUpStatus) 
        { 
         //Connect to DB 
         SqlConnection Conn = new SqlConnection("Server=(local); Data Source=LocalHost; DataBase=Exchange; UID=sa; Pwd=sql"); 
         //string con = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\SRVCARD.mdf;Integrated Security=True;User Instance=True"; 
         if (Conn.State.ToString() == "Open") 
         { 
          Conn.Close(); 
         } 
         Conn.Open(); 
         SqlCommand command = new SqlCommand(@"backup database Exchange To Disk='" + path + "' with stats=10", Conn); 
         command.ExecuteNonQuery(); 
         Conn.Close(); 
         MessageBox.Show("Backup successfully", "Backup", MessageBoxButtons.OK, MessageBoxIcon.Information); 
        } 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show("please change the path"); 
        //MessageBox.Show(ex.ToString()); 
       } 
      } 
+1

請使用正確的代碼格式。此外,沒有解釋的純代碼答案質量低下。 – lolbas 2018-02-20 08:22:49