.Net下的数据备份和还原

转载 2006年05月22日 09:24:00

数据库:SQL Server  ;引用SQLDMO
◆数据备份 :
 /// <summary>
  /// 备份数据库
  /// </summary>
  private void btnBackUp_Click(object sender, System.EventArgs e)
  {
   this.Cursor = Cursors.WaitCursor;
   this.label1.Text = "  正在进行档案库的数据备份,这可能需要几秒到几十的时间,请稍候...";
   this.label1.Visible = true;
   this.label1.Refresh();
   this.pBar1.Visible = true;
   //------------------------------------------------------------------------------------

  
   string selfName = “D:/NorthwindBak“;
   string deviceName = “NorthwindBak“;
   string remark = "备份测试";
  
   //◆数据备份:
   SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
   SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
   oBackup.Action = 0 ;
   oBackup.Initialize = true ;
   SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
   oBackup.PercentComplete += pceh;

   try
   {
    oSQLServer.LoginSecure = false;
    oSQLServer.Connect(Common.MySettings.SqlServerName, "sa", "");
    oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
    oBackup.Database = "Northwind";//数据库名
    oBackup.Files = selfName;//文件路径
    oBackup.BackupSetName = deviceName;//备份名称
    oBackup.BackupSetDescription = remark;//备份描述
    oBackup.Initialize = true;
    oBackup.SQLBackup(oSQLServer);
   
   }
   catch(System.Exception ex)
   {
    Common.ShowMsg("数据备份失败:/n" + ex.ToString());
   }
   finally
   {
    oSQLServer.DisConnect();
   }

   //------------------------------------------------------------------------------------
   this.label1.Visible = false;
   this.pBar1.Visible = false;
   this.Cursor = Cursors.Default;
  }


  /// <summary>
  /// 显示备份进度条
  /// </summary>
  private void Step(string message,int percent)
  {
   this.pBar1.Value = percent ;
  }

◆数据还原 :
  /// <summary>
  /// 还原数据库
  /// </summary>
  private void btnRestore_Click(object sender, System.EventArgs e)
  {
  
   this.Cursor = Cursors.WaitCursor;
   this.label1.Text = "  正在进行档案库的数据还原,这可能需要几秒到几十的时间,请稍候...";
   this.label1.Visible = true;
   this.label1.Refresh();
   this.pBar1.Visible = true;
   //------------------------------------------------------------------------------------

   string fileName = "NorthwindBak";
   string filePath = "D:/NorthwindBak";
   string remark = "备份测试";

   SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
   SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
   oRestore.Action = 0 ;
   SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
   oRestore.PercentComplete += pceh;
   try
   {
                oSQLServer.Connect(Common.MySettings.SqlServerName, "sa", "");
                SQLDMO.QueryResults qr = oSQLServer.EnumProcesses(-1) ;
                int iColPIDNum = -1 ;
                int iColDbName = -1 ;

  //杀死其它的连接进程
                for(int i=1;i<=qr.Columns;i++)
                {
                    string strName = qr.get_ColumnName(i) ;
                    if (strName.ToUpper().Trim() == "SPID")
                    {
                        iColPIDNum = i ;
                    }
                    else if (strName.ToUpper().Trim() == "DBNAME")
                    {
                        iColDbName = i ;
                    }
                    if (iColPIDNum != -1 && iColDbName != -1)
                        break ;
                }

                for(int i=1;i<=qr.Rows;i++)
                {
                    int lPID = qr.GetColumnLong(i,iColPIDNum) ;
                    string strDBName = qr.GetColumnString(i,iColDbName) ;
                    if (strDBName.ToUpper() == "Northwind".ToUpper())
                        oSQLServer.KillProcess(lPID) ;
                }


    oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
    oRestore.Database = "Northwind";
    oRestore.Files = filePath;
    oRestore.FileNumber = 1;
    oRestore.ReplaceDatabase = true;
    oRestore.SQLRestore(oSQLServer);

               
  }
            catch(System.Exception ex)
            {
                Common.ShowMsg("数据还原失败:/n" + ex.ToString());
   }
   finally
   {
    oSQLServer.DisConnect();
   }
 
   //------------------------------------------------------------------------------------
   this.label1.Visible = false;
   this.pBar1.Visible = false;
   this.Cursor = Cursors.Default;
  }

  /// <summary>
  /// 显示还原进度条
  /// </summary>
  private void Step(string message,int percent)
  {
   this.pBar1.Value = percent ;
  }

 

 

相关文章推荐

数据备份还原软件

  • 2013年07月17日 10:31
  • 24KB
  • 下载

Oracle_10g数据备份还原取数

  • 2012年06月26日 10:54
  • 4.66MB
  • 下载

ASP.NET备份数据与还原数据,解决数据库正在使用的问题

备份: 在备份按钮里写: protected void Button1_Click(object sender, EventArgs e) { string path = "e:\\MA...

MySQL--数据备份还原以及主从复制

作为数据库,为了数据安全,mysql当然提供了数据备份和数据还原的功能,而且还提供了主从复制的功能,也就是说能搭建数据库集群,以下记录下常用的操作步骤流程;一. MYSQL的备份备份相当简单,使用my...

linux 平台下 postgres 使用 (安装 启动 关闭 数据备份 还原)

 启动PostgreSQL 发布日期 15-7-16 上午3:04   安装和启动PostgreSQL的方法, 很全面、细致, here. One copy is l...
  • qxd100
  • qxd100
  • 2015年10月13日 13:25
  • 384

mysql数据备份与还原纷

http://sh.58.com/huangpu/jdyd/jh_%e6%a1%82%e6%9e%97%e5%93%aa%e9%87%8c%e4%b9%b0%e8%bf%b7%e6%98%8f%e8%...

MySQL知识(二十二)——数据备份、还原与迁移

某些意外的情况可能导致数据库的丢失,因此应该定期地备份数据库。介绍数据备份、数据还原和数据库迁移。...
  • Zen99T
  • Zen99T
  • 2016年02月29日 16:11
  • 602

MySQL 数据备份与还原(mysqldump)

一、数据备份   1、使用mysqldump命令备份   mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。   mysqldump命令的工...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.Net下的数据备份和还原
举报原因:
原因补充:

(最多只允许输入30个字)