.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 ;
  }

 

 

ADO.NET 备份还原数据库

献给需要的人和我自己
  • bdbql
  • bdbql
  • 2015年06月16日 16:29
  • 438

ASP.NET中使用代码来进行备份和还原数据库

Sql代码   -- 备份数据库  backup database db_CSManage to disk='c:\backup.bak'  -- 还原数据库,必须先备份该数据库的日志文件到...
  • hbgyjs98235
  • hbgyjs98235
  • 2014年03月18日 00:14
  • 1478

用asp.net还原与恢复sqlserver数据库

需要注意的时还原,还原的时候问题最大了,有别的用户使用数据库的时候无法还原,解决办法就是在MASTER数据库中添加一个存储过程: create proc killspid (@dbname ...
  • make1828
  • make1828
  • 2014年05月07日 08:48
  • 777

关于SQLServer数据库远程备份和还原的那些事儿

PS:本人本是一名机械男,11年毕业,四年前认识了我现在老婆,老婆是个.NET程序员,收她影响结合自身的兴趣爱好,两年前开始自学.NET,一年半前放弃某国企项目经理职位,转入IT行业。与公司众多的帅锅...
  • Arnold1988
  • Arnold1988
  • 2015年12月25日 16:14
  • 2020

推荐.Net、C# 逆向反编译四大工具利器

在项目开发过程中,估计也有人和我遇到过同样的经历:运行环境出现了重大Bug亟需解决、或者由于电脑挂了、旧代码覆盖新代码,而在这种情况下,我们不能直接在当前的代码中修改这个Bug然后发布,这会导致更严重...
  • kongwei521
  • kongwei521
  • 2017年02月08日 16:25
  • 30813

关于.NET 的NuGet包还原失败问题解决

当我们生成解决方案的时候,报错找不到。。。版本的NuGet包,问题分析如下: 1、打开packages.config 我们这里可以看到此解决方案以前是安装过Nu...
  • wuqing362415410
  • wuqing362415410
  • 2016年03月01日 14:00
  • 2943

项目中 .net framework (v4.0 ->v3.5)降级引发的问题及解决方案

为了排查项目中一个问题,将解决方案中 web项目由 v3.5升级至 v4.0, 排查完成后, 在源代码管理器中撤消所有更改, 没多想,以为一切很正常....
  • egman
  • egman
  • 2016年09月12日 22:25
  • 1763

SQL Server 2012 还原选项的变化

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jimshu.blog.51cto.com/3171847/1595961 ...
  • wozengcong
  • wozengcong
  • 2015年12月24日 14:05
  • 974

操作系统还原真相阅读笔记(一)——答疑解惑

说明1、本书真是好书 2、想到再补充一、为什么库函数可以调用系统调用 之前看APUE的时候看到的,exit(库函数)实现实际上还是调用了系统调用sys_exit。按照常理来说,标准C库函数应该具有可...
  • sium__
  • sium__
  • 2016年04月25日 20:37
  • 3133

(C语言-数据结构与算法)还原二叉树

第一次写博客 因为看到一篇文章,是搞编程的学长写的,他在求职的时候,面试官说他提前看过了学长的博客,我在想我也应该把自己写代码的一些心得一些问题写出来,虽然在上大学之前,从来没有这样接触电脑,除了玩游...
  • Caeser110
  • Caeser110
  • 2015年06月04日 12:09
  • 1202
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.Net下的数据备份和还原
举报原因:
原因补充:

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