SQLDMO.Backup Backup = new SQLDMO.BackupClass();
SQLDMO.SQLServer BServer = new SQLDMO.SQLServerClass();
//显示进度条   
SQLDMO.BackupSink_PercentCompleteEventHandler BProgress = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
Backup.PercentComplete += BProgress;
try
{
 BServer.LoginSecure = true;
 BServer.Connect(".", "", "");
 Backup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
 Backup.Database = "BookSystem";
 Backup.Files = "\\BookSystem.bak";
 Backup.BackupSetName = "BookSalesSystem";
 Backup.BackupSetDescription = "数据库备份";
 Backup.Initialize = true;
 Backup.SQLBackup(BServer);
}
 catch (Exception ex)
 {
     MessageBox.Show(ex.Message);
  }
 finally
{
   BServer.DisConnect();
 }
private void Step(string message, int percent)
{
    progressBar1.Value = percent;
 }
我用这个代码备份数据库,可以备份成功,但是进度条不走,我测试了一下,那个percent的值一直是0,请问这是怎么回事

解决方案 »

  1.   

    楼主备份的是不是SQL2005的数据库
      

  2.   

    我这里备份2000的数据库没问题
    但是2005的不能获取percent的值,该值总是0
      

  3.   

    楼主可以设置
    //每多少进度提醒一次,默认为10
    //这样每触发一次PercentComplete事件就可以保证是增加了进度nBackup.PercentCompleteNotification = 5;      
    然后private void Step(string message, int percent)
    {
        //progressBar1.Value = percent;
        progressBar1.Value=progressBar1.Value+5;
    }
      

  4.   

    添加progressBar
    SQLDMO.BackupSink_PercentCompleteEventHandler progress = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
    backup.PercentComplete += progress;backup.SQLBackup(server);
    this.proStep.Visible = false;