2011-05-24 67 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