正文

.Net下的数据备份和还原2006-05-31 17:01:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/Csharpsky/15256.html

分享到:

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

阅读(2555) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册