百度首页 | 百度空间
 
查看文章
 
C# SQLSERVER数据库备份程序
2008-07-04 11:57
软件功能:
       SQLSERVER数据库的备份和还原,有日志记录。傻瓜操作,避开了直接对SQLSERVER的操作。

废话一堆:
      在公司做程序的期间我常常遇到客户不懂怎样备份数据库的问题,恰恰公司的开发语言有PB,DELPHI,C#等,所以公司没有花精力让我们做系统自动备份 程序。要维护客户的程序,我们有时就需要得到用户数据库上的数据,但客户基本上都不会做备份操作,这样给我们的维护工作造成许多障碍。(废话真多)。于 是,我写了下面这个程序。(功能不强,自己做的玩的哈)
     另外,软件上虽然有公司标志,请不要介意,我并没有将程序提交到公司。


     程序界面:

主要代码段:

//数据库的备份和实时进度显示代码:
   public bool BackUPDB(string ServerName,string UserName,string Password,string strDbName,string strFileName, ProgressBar pgbMain)
   {
          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)) ;
                    //return false ;
                   //MessageBox.Show("备份数据库失败"+err.Message);
           }
           finally
           {
                   svr.DisConnect() ;
           }
     }


//数据库的恢复的代码:
   public bool RestoreDB(string ServerName,string UserName,string Password,string strDbName,string strFileName, ProgressBar pgbMain)
   {
           PBar = pgbMain ;
          SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ;
            try
          {
                   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)) ;
                  //return false ;
                  //MessageBox.Show("恢复数据库失败,请关闭所有和该数据库连接的程序!"+err.Message);
               }
                finally
               {
                   svr.DisConnect() ;
               }
       }

帮助界面:



          就是一个简单的程序,界面用了制作不规则窗体的一点东西。主要是调用了SQL自己的东西做的。
          软件下载:/Files/allancandy/Debug.rar     (我懒,没有做安装包:))
         运行环境:自己只在win2000上用过,必要条件是先装.net framework


类别:c# | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu