当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > .Net下的数据备份和还原

ASP.NET
Internet Explorer 编程简述(二)在IE中编辑OLE嵌入文档
移动窗体
.NET 2.0获取数据库连接统计数据
VB.NET 拖动无边框的窗体
利用WH_CBT Hook将非模态对话框显示为模态对话框
Aspect#应用 - 权限验证
VB 从零开始编外挂(一)
【错误解决】Unable to find script library 'WebUIValidation.js'
VB 从零开始编外挂(四)
DTD指南(3)-DTD-Elements(元素)
知识库文章MDL9745154-File:Microsoft Visual Basic 运行时库
.net手机软件开发(六)OBEX应用:文件传输部分
在winform中使用WebBrowser控件时怎样去除IE的滚动条
WINZIP及WINRAR命令!!!!!
智能客户端相关Application Block结构功能分析(二)
如何在VB中操作EXCEL(一段代码,两个可以使用的过程)
在C#中用最简洁有效的代码执行存储过程并返回数据
.Net的Collection类的一些使用说明
ASP.NET实现数据图表c
用asp.net画饼图

ASP.NET 中的 .Net下的数据备份和还原


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 91 ::
收藏到网摘: n/a

  数据库: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 ;
  }