在ASP.NET页面中实现数据库备份和恢复功能

转载 2007年10月01日 12:43:00
using   System;  
  using   SQLDMO;  
  using   System.Drawing;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Windows.Forms;  
  using   System.Data;  
   
  namespace   bakServe040907  
  {  
   
  ///   <summary>  
  ///   数据库备份类说明  
  ///   </summary>  
  public   class   bakServer  
  {  
  string   ServerName;       //数据服务器名称  
  string   UserName;           //用户名称  
  string   Password;           //用户密码  
  string   message;             //消息提示    
  ProgressBar   PBar;         //状态条控件  
   
  public   bakServer()  
  {  
   
  }  
   
  ///   <summary>  
  ///   取得数据库服务器列表  
  ///   </summary>  
  ///   <returns>数据库服务器列表</returns>  
  public   ArrayList   GetServerList()    
  {    
  ArrayList   alServers   =   new   ArrayList()   ;    
  SQLDMO.Application   sqlApp   =   new   SQLDMO.ApplicationClass()   ;    
  try    
  {    
  SQLDMO.NameList   serverList   =   sqlApp.ListAvailableSQLServers()   ;    
  for(int   i   =   1;i<=   serverList.Count;i++)    
  {    
  alServers.Add(serverList.Item(i))   ;    
  }    
  }    
  catch(Exception   e)    
  {    
  // throw(new   Exception("取数据库服务器列表出错:"+e.Message))   ;    
  message   =   "取数据库服务器列表出错:"   +e.Message;  
   
  }    
  finally    
  {    
  sqlApp.Quit()   ;    
  }    
  return   alServers   ;    
  }    
   
   
  ///   <summary>  
  ///   错误消息处理  
  ///   </summary>  
  ///   <returns>消息信息</returns>  
  public   string   Msg()  
  {  
  return   message;  
  }  
   
  ///   <summary>  
  ///   取得指定数据库列表  
  ///   </summary>  
  ///   <param   name="strServerName">服务器名称</param>  
  ///   <param   name="strUserName">用户名称</param>  
  ///   <param   name="strPwd">用户密码</param>  
  ///   <returns>数据库列表</returns>  
  public   ArrayList   GetDbList(string   strServerName,string   strUserName,string   strPwd)    
  {    
  ServerName   =   strServerName   ;    
  UserName   =   strUserName   ;    
  Password   =   strPwd   ;    
   
   
  ArrayList   alDbs   =   new   ArrayList()   ;    
  SQLDMO.Application   sqlApp   =   new   SQLDMO.ApplicationClass()   ;    
  SQLDMO.SQLServer   svr   =   new   SQLDMO.SQLServerClass()   ;    
  try    
  {    
  svr.Connect(ServerName,UserName,Password)   ;    
  foreach(SQLDMO.Database   db   in   svr.Databases)    
  {    
  if(db.Name!=null)    
  alDbs.Add(db.Name)   ;    
  }    
  }    
  catch(Exception   err)    
  {    
  // throw(new   Exception("连接数据库出错:"+e.Message))   ;    
  message   =   "连接数据库出错:"   +err.Message;  
  }    
  finally    
  {    
  svr.DisConnect()   ;    
  sqlApp.Quit()   ;    
  }    
  return   alDbs   ;    
  }    
   
   
  //数据库的备份和实时进度显示代码:    
  ///   <summary>  
  ///   数据库的备份和实时进度显示  
  ///   </summary>  
  ///   <param   name="strDbName">数据库名称</param>  
  ///   <param   name="strFileName">备份文件名</param>  
  ///   <param   name="pgbMain">状态条控件名称</param>  
  ///   <param   name="strServerName">服务器名称</param>  
  ///   <param   name="strUserName">用户名称</param>  
  ///   <param   name="strPwd">密码</param>  
  ///   <returns>备份成功返回true   ,否则返回false</returns>  
  public   bool   BackUPDB(string   strDbName,string   strFileName,   ProgressBar   pgbMain,string   strServerName,string   strUserName,string   strPwd)    
  {    
  ServerName   =   strServerName   ;    
  UserName   =   strUserName   ;    
  Password   =   strPwd   ;    
   
  PBar   =   pgbMain;    
  SQLDMO.SQLServer   svr   =   new   SQLDMO.SQLServerClass()   ;    
  try    
  {    
  svr.Connect(ServerName,UserName,Password)   ;    
  SQLDMO.Backup   bak   =   new   SQLDMO.BackupClass();    
  bak.Action   =   0   ;    
  bak.Initialize   =   true   ;    
  SQLDMO.BackupSink_PercentCompleteEventHandler   pceh   =   new   SQLDMO.BackupSink_PercentCompleteEventHandler(Step);    
  bak.PercentComplete   +=   pceh;    
   
  bak.Files   =   strFileName;    
  bak.Database   =   strDbName;    
  bak.SQLBackup(svr);    
  return   true   ;    
  }    
  catch(Exception   err)    
  {    
  // throw(new   Exception("备份数据库失败"+err.Message))   ;    
  message   =   "备份数据库失败:"   +err.Message;  
                                  return   false   ;    
  }    
  finally    
  {    
  svr.DisConnect()   ;    
  }    
  }    
   
   
  ///   <summary>  
  ///   显示进度条的当前进度  
  ///   </summary>  
  ///   <param   name="message"></param>  
  ///   <param   name="percent"></param>  
  private   void   Step(string   message,int   percent)    
  {    
  PBar.Value   =   percent   ;    
  }    
  // 其中,这两个语句实现了进度的实时显示:    
  // SQLDMO.BackupSink_PercentCompleteEventHandler   pceh   =   new   SQLDMO.BackupSink_PercentCompleteEventHandler(Step);    
  // bak.PercentComplete   +=   pceh;    
  // Step就是上面private   void   Step(string   message,int   percent)   的方法名称,它用来显示进度条的当前进度。    
   
   
   
  ///   <summary>  
  ///   数据库的恢复和杀死进程  
  ///   </summary>  
  ///   <param   name="strDbName">数据库名称</param>  
  ///   <param   name="strFileName">备份文件名</param>  
  ///   <param   name="pgbMain">状态条控件名称</param>  
  ///   <param   name="strServerName">服务器名称</param>  
  ///   <param   name="strUserName">用户名称</param>  
  ///   <param   name="strPwd">密码</param>  
  ///   <returns>恢复成功返回true   ,否则返回false</returns>  
  public   bool   RestoreDB(string   strDbName,string   strFileName,   ProgressBar   pgbMain,string   strServerName,string   strUserName,string   strPwd   )    
  {    
  PBar   =   pgbMain   ;    
  SQLDMO.SQLServer   svr   =   new   SQLDMO.SQLServerClass()   ;    
  try    
  {    
  ServerName   =   strServerName   ;    
  UserName   =   strUserName   ;    
  Password   =   strPwd   ;    
   
  svr.Connect(ServerName,UserName,Password)   ;    
  SQLDMO.QueryResults   qr   =   svr.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()   ==   strDbName.ToUpper())    
  svr.KillProcess(lPID)   ;    
  }    
   
  SQLDMO.Restore   res   =   new   SQLDMO.RestoreClass()   ;    
  res.Action   =   0   ;    
  SQLDMO.RestoreSink_PercentCompleteEventHandler   pceh   =   new   SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);    
  res.PercentComplete   +=   pceh;    
  res.Files   =   strFileName   ;    
   
  res.Database   =   strDbName   ;    
  res.ReplaceDatabase   =   true   ;    
  res.SQLRestore(svr)   ;    
  return   true   ;    
  }    
  catch(Exception   err)    
  {    
  // throw(new   Exception("恢复数据库失败,请关闭所有和该数据库连接的程序!"+err.Message))   ;    
  message   =   "恢复数据库失败,请关闭所有和该数据库连接的程序!"   +err.Message;  
  return   false;  
  }    
  finally    
  {    
  svr.DisConnect()   ;    
  }    
  }    
  }  
  } 
 

在ASP.NET页面中实现数据库备份和恢复功能

using   System;     using   SQLDMO;     using   System.Drawing;     using   System.Collections;     ...
  • JOHNCOOLS
  • JOHNCOOLS
  • 2007年01月29日 11:38
  • 1149

在ASP.NET页面中实现数据库备份和恢复功能

using   System;     using   SQLDMO;     using   System.Drawing;     using   System.Collections;     ...
  • kong1122
  • kong1122
  • 2007年05月28日 12:30
  • 873

在页面进行数据库备份和还原

后台模块有处需求是,用户可以在界面进行数据库的备份和恢复,由于以前在windows上实现过,因此这次把代码跑到linux上,遇到了一些坑,这里便记录下。 第一个坑,常用的登录mysql都是m...
  • molaifeng
  • molaifeng
  • 2014年03月31日 11:06
  • 1256

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

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

asp.net下实现数据库的备份与恢复

WebDataBak.aspx.cs bakServer.cs为自定义类代码核心代码:1.private void BtnDataBackup_Click(object sender, System....
  • lee576
  • lee576
  • 2007年06月18日 20:02
  • 1103

数据库备份与还原(VB代码示例)

一、数据备份    备份有两中形式完全备份和差异备份    完全备份:是对数据库进行完整备份,周期比较长,如1周等    差异备份:是对更新备份的数据进行备份,周期比较短,如1小时    命令介绍: ...
  • hackwolf2007
  • hackwolf2007
  • 2007年06月09日 15:13
  • 1184

JAVAWEB实现数据库备份功能

JavaWeb实现数据库备份一.整体思路这次公司的网管系统需要做一个数据库备份的功能,由于使用的MySql数据库,而且系统是windows(目前也就会windows),所以可以选择的方法就比较有限了。...
  • wu4355627
  • wu4355627
  • 2016年04月26日 15:02
  • 4957

MySQL数据库备份/恢复/导出/导入

1.使用mysqldump命令备份数据库  如何使用mysqldump命令?   注意:mysqldump是DOS系统下的命令,在使用时无须进入musql命令行,否则将无法执行  使用R...
  • qq_41303423
  • qq_41303423
  • 2018年02月05日 18:53
  • 28

在JSP页面调用JAVA方法实现MySQL数据库的备份和恢复

今天弄了好久,终于搞定了这个问题。使用java代码实现数据库的备份。 Java代码代码   package cn.qm.db;   import java.io.Buff...
  • luckily01
  • luckily01
  • 2012年11月29日 09:41
  • 5974

ASP.NET 所有的页面指令介绍

当使用指令时,虽然标准的做法是将指令包括在文件的开头,但是它们可以位于 .aspx 或 .ascx 文件中的任何位置。每个指令都可以包含一个或多个特定于该指令的属性(与值成对出现)。 注意   ...
  • u011966339
  • u011966339
  • 2016年11月17日 11:27
  • 815
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ASP.NET页面中实现数据库备份和恢复功能
举报原因:
原因补充:

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