准备写一个数据备份程序,对数据有选择的进行备份,有谁有好的思路分享下.

解决方案 »

  1.   

    首先添加对sqldmo.dll的引用,位置在C:\Program Files\Microsoft SQL Server\80\Tools\Binn目录下,然后在程序中加入using SQLDMO;引用
    注意(SQLDOM必须运行在SQL Server SP2或以上版本)
    //备份数据库
    private void BeginBackUp(string FileName,string uid,string pwd)
    {string Path =FileName;
       
       //实例化SQLDMO的各个对象
       SQLDMO.Backup backup = new SQLDMO.BackupClass();
       SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();   try
       {
        //设置安全验证
        server.LoginSecure=false;
        //设置连接数据库
        server.Connect("(local)",uid,pwd);
        backup.Action=0;    //方法绑定
        SQLDMO.BackupSink_PercentCompleteEventHandler percent = new SQLDMO.BackupSink_PercentCompleteEventHandler(ShowProcessBar);
        backup.PercentComplete +=percent;
        
        //设置备份的数据库
        backup.Database="LibraryClass";
        //设置备份文件名
        backup.BackupSetName="LibraryClassbackup";
        //设置备份文件描述
        backup.BackupSetDescription="BackUp";
        Path = Path + backup.BackupSetName.ToString() ;
        //设置存储路径
        backup.Files=@Path;
        backup.Initialize=true;
        //设置备份服务器--与server关联
        backup.SQLBackup(server);    MessageBox.Show("备份成功!");
       catch(Exception ex)
       {
        MessageBox.Show("备份失败,请检查!" +"\n" + ex.Message.ToString() );
       }
       finally
       {
        //释放对象
        server.DisConnect();
        server=null;
        backup=null;
       }
    }
    private void ShowProcessBar(string message,int percent)
      {
       //显示进度条
       this.pbProcess.Value=percent;
      }//还原数据库
    //实例SQLDMO还原对象
    private void RealeaseBD(string FileName,string uid,string pwd)
    {
       SQLDMO.Restore restore = new SQLDMO.RestoreClass();
       SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();
       try
       {
        server.LoginSecure=false;    //设置连接数据库
        server.Connect("(local)",uid,pwd);
        //触发还原数据库方法
        SQLDMO.RestoreSink_PercentCompleteEventHandler percent = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Show);
        restore.PercentComplete +=percent;    restore.Action =SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;    //设置需还原的数据库
        restore.Database="LibraryClass";
        //备份文件存放路径
        restore.Files=FileName
        restore.ReplaceDatabase=true;
        restore.FileNumber=1;
        //设置还原服务器
        restore.SQLRestore(server);
        MessageBox.Show("还原成功!");
       }
        //异常处理
       catch(Exception ex)
       {
        MessageBox.Show("还原数据库出错" + "\n" + ex.Message);
       }
        //释放对象
       finally
       {
        server.DisConnect();
        restore=null;
        server=null;
       }
    }
      private void Show(string Message,int percent)
      {
       this.pBarProcess.Value=percent;
      }
      

  2.   

    使用存储过程备份数据库
    http://topic.csdn.net/u/20100316/12/8209efb2-f1e5-490c-8978-ff8e1ef3a27b.html