国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在ASP.NET頁面中實(shí)現(xiàn)數(shù)據(jù)庫備份和恢復(fù)功能

2024-07-10 13:05:52
字體:
供稿:網(wǎng)友
using   system;  
  using   sqldmo;  
  using   system.drawing;  
  using   system.collections;  
  using   system.componentmodel;  
  using   system.windows.forms;  
  using   system.data;  
   
  namespace   bakserve040907  
  {  
   
  ///   <summary>  
  ///   數(shù)據(jù)庫備份類說明  
  ///   </summary>  
  public   class   bakserver  
  {  
  string   servername;       //數(shù)據(jù)服務(wù)器名稱  
  string   username;           //用戶名稱  
  string   password;           //用戶密碼  
  string   message;             //消息提示    
  progressbar   pbar;         //狀態(tài)條控件  
   
  public   bakserver()  
  {  
   
  }  
   
  ///   <summary>  
  ///   取得數(shù)據(jù)庫服務(wù)器列表  
  ///   </summary>  
  ///   <returns>數(shù)據(jù)庫服務(wù)器列表</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("取數(shù)據(jù)庫服務(wù)器列表出錯(cuò):"+e.message))   ;    
  message   =   "取數(shù)據(jù)庫服務(wù)器列表出錯(cuò):"   +e.message;  
   
  }    
  finally    
  {    
  sqlapp.quit()   ;    
  }    
  return   alservers   ;    
  }    
   
   
  ///   <summary>  
  ///   錯(cuò)誤消息處理  
  ///   </summary>  
  ///   <returns>消息信息</returns>  
  public   string   msg()  
  {  
  return   message;  
  }  
   
  ///   <summary>  
  ///   取得指定數(shù)據(jù)庫列表  
  ///   </summary>  
  ///   <param   name="strservername">服務(wù)器名稱</param>  
  ///   <param   name="strusername">用戶名稱</param>  
  ///   <param   name="strpwd">用戶密碼</param>  
  ///   <returns>數(shù)據(jù)庫列表</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("連接數(shù)據(jù)庫出錯(cuò):"+e.message))   ;    
  message   =   "連接數(shù)據(jù)庫出錯(cuò):"   +err.message;  
  }    
  finally    
  {    
  svr.disconnect()   ;    
  sqlapp.quit()   ;    
  }    
  return   aldbs   ;    
  }    
   
   
  //數(shù)據(jù)庫的備份和實(shí)時(shí)進(jìn)度顯示代碼:    
  ///   <summary>  
  ///   數(shù)據(jù)庫的備份和實(shí)時(shí)進(jìn)度顯示  
  ///   </summary>  
  ///   <param   name="strdbname">數(shù)據(jù)庫名稱</param>  
  ///   <param   name="strfilename">備份文件名</param>  
  ///   <param   name="pgbmain">狀態(tài)條控件名稱</param>  
  ///   <param   name="strservername">服務(wù)器名稱</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("備份數(shù)據(jù)庫失敗"+err.message))   ;    
  message   =   "備份數(shù)據(jù)庫失敗:"   +err.message;  
                                  return   false   ;    
  }    
  finally    
  {    
  svr.disconnect()   ;    
  }    
  }    
   
   
  ///   <summary>  
  ///   顯示進(jìn)度條的當(dāng)前進(jìn)度  
  ///   </summary>  
  ///   <param   name="message"></param>  
  ///   <param   name="percent"></param>  
  private   void   step(string   message,int   percent)    
  {    
  pbar.value   =   percent   ;    
  }    
  // 其中,這兩個(gè)語句實(shí)現(xiàn)了進(jìn)度的實(shí)時(shí)顯示:    
  // sqldmo.backupsink_percentcompleteeventhandler   pceh   =   new   sqldmo.backupsink_percentcompleteeventhandler(step);    
  // bak.percentcomplete   +=   pceh;    
  // step就是上面private   void   step(string   message,int   percent)   的方法名稱,它用來顯示進(jìn)度條的當(dāng)前進(jìn)度。    
   
   
   
  ///   <summary>  
  ///   數(shù)據(jù)庫的恢復(fù)和殺死進(jìn)程  
  ///   </summary>  
  ///   <param   name="strdbname">數(shù)據(jù)庫名稱</param>  
  ///   <param   name="strfilename">備份文件名</param>  
  ///   <param   name="pgbmain">狀態(tài)條控件名稱</param>  
  ///   <param   name="strservername">服務(wù)器名稱</param>  
  ///   <param   name="strusername">用戶名稱</param>  
  ///   <param   name="strpwd">密碼</param>  
  ///   <returns>恢復(fù)成功返回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("恢復(fù)數(shù)據(jù)庫失敗,請(qǐng)關(guān)閉所有和該數(shù)據(jù)庫連接的程序!"+err.message))   ;    
  message   =   "恢復(fù)數(shù)據(jù)庫失敗,請(qǐng)關(guān)閉所有和該數(shù)據(jù)庫連接的程序!"   +err.message;  
  return   false;  
  }    
  finally    
  {    
  svr.disconnect()   ;    
  }    
  }    
  }  
  }   
 
  • 網(wǎng)站運(yùn)營seo文章大全
  • 提供全面的站長運(yùn)營經(jīng)驗(yàn)及seo技術(shù)!
  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 平原县| 招远市| 略阳县| 田东县| 虎林市| 驻马店市| 山阳县| 拉孜县| 巴彦县| 托克托县| 岐山县| 松阳县| 保亭| 汨罗市| 正镶白旗| 剑阁县| 乌恰县| 绥阳县| 巴林左旗| 南康市| 施秉县| 东丰县| 峨眉山市| 聂荣县| 沂南县| 三明市| 商丘市| 长岭县| 财经| 额敏县| 红安县| 保德县| 贵南县| 湘阴县| 潢川县| 山阳县| 西和县| 黄平县| 永安市| 运城市| 新绛县|