.Net下的数据备份和还原

转载 2006年06月15日 10:53: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() == "CgRecord".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...

arccatalog往oracle里粘贴空间数或数据备份还原报错

当使用arccatalog往oracle里粘贴空间数据或者数据泵命令导入导出数据报ora-29861:域索引标记为loading/failed/unusab ORA-39127: unexpecte...

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%...

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

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

mongodb数据备份还原及主从搭建

1. 数据导出 mongoexport 命令: mongoexport -d database -c collection -o output_file 参数说明: -d 指明使用的数据库...

linux命令dd:数据备份与恢复,切割还原大文件,测试读取写入磁盘速度

dd 使用dd这个linux命令可以创建一定大小文件。 linux创建文件命令:dd命令 把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。语法: CODE:[C...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: .Net下的数据备份和还原
举报原因:
原因补充:

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