C#对SQL Server数据库的备份与还原

时间:2023-03-09 17:13:17
C#对SQL Server数据库的备份与还原

  备份数据库:

    string connectionString = "server=服务器名称;database=数据库名;uid=登入名;pwd=登入密码";         //登入名和密码在SQL Server中查找
    private void btnBackDataBase_Click(object sender, EventArgs e)
    {
      try
      {
        SaveFileDialog sf = new SaveFileDialog();
        DialogResult dr = sf.ShowDialog();
        if (dr == DialogResult.OK)
        {
          string path = sf.FileName;
          string sql = " BACKUP DATABASE 数据库名 to DISK = '" + path + "'";
          SqlConnection con = new SqlConnection(connectionString);
          con.Open();
          SqlCommand cmd = new SqlCommand(sql, con);
          cmd.ExecuteNonQuery();
          MessageBox.Show("数据库备份成功");
          con.Close();
        }
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message.ToString());
      } 
    }

  数据库还原:

    private void btnRestore_Click(object sender, EventArgs e)
    {
      OpenFileDialog ofd = new OpenFileDialog();
      DialogResult dr = ofd.ShowDialog();
      if (dr == DialogResult.OK)
      {
        try
        {
          string cmdText = @"restore database 数据库名 from disk='" + ofd.FileName + "'";
          SqlConnection con = new SqlConnection(connectionString);
          con.Open();
          string setOffline = "Alter database 数据库名 Set Offline With rollback immediate ";
          string setOnline = " Alter database 数据库名 Set Online With Rollback immediate";
          string sql = setOffline + cmdText + setOnline;
          SqlCommand cmd = new SqlCommand(sql, con);
          cmd.ExecuteNonQuery();
          con.Close();
        }
        catch (Exception ex)
        {
          MessageBox.Show(ex.Message);
        }
      }
    }