备份是成功了,但是想显示备份进度,如何做到,谢谢先

解决方案 »

  1.   

    关注
    这个也许 微软提供了接口. 要不就只有通过 反编译 sql2005的ide 来查找了.
      

  2.   

    我查到了但是具体没实现成功
    using Microsoft.SqlServer.Management.Smo;
    using Microsoft.SqlServer.Management.Common;
    Backup bkp = new Backup();
      bkp.PercentComplete += new PercentCompleteEventHandler(ProgressEventHandler);        static void ProgressEventHandler(object sender, PercentCompleteEventArgs e)
            {
                //WriteToLogAndConsole( + "% Complete");
                 }
    大家帮忙看看这样行不行,我不知道哪写错,进度条始终没反应
      

  3.   

    1、加上application.DoEvents
    2、加上断点看看是否切入了该事件这个东西估计大多数人没有用过的,你也只能一点点地实验了。
      

  4.   

    2000的使用SQLDMO.dll实现过,不过2005没有实现过
    this.progressBar.Visible = true;
    this.Cursor = Cursors.WaitCursor; //◆数据备份:
    SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
    SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
    oBackup.Action = 0 ; 
    oBackup.Initialize = true ; 
    SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step); 
    oBackup.PercentComplete += pceh;  try
    {
    oSQLServer.LoginSecure = false;
    oSQLServer.Connect(temp[0], temp[1], temp[2]);
    oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
    oBackup.Database = "StaffDB";//数据库名
    oBackup.Files = txtPath.Text;//文件路径
    oBackup.BackupSetName = "StaffDB" ;//备份名称
    oBackup.BackupSetDescription = "数据备份";//备份描述
    oBackup.Initialize = true;
    oBackup.SQLBackup(oSQLServer);//备份数据库
                    
    MessageBox.Show("数据库备份成功!","提示",MessageBoxButtons.OK);

    }
    catch(System.Exception ex)
    {
    MessageBox.Show("数据备份失败:\n" + ex.ToString(),"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    finally
    {
    oSQLServer.DisConnect();
    } //------------------------------------------------------------------------------------
    this.progressBar.Visible = false;
    this.Cursor = Cursors.Default;/// <summary>
    /// 显示进度条
    /// </summary>
    private void Step(string message,int percent) 

    this.progressBar.Value = percent ; 
    System.Threading.Thread.Sleep(1000);
    }
      

  5.   

    我已经解决了,相关的参考文件:http://msdn.microsoft.com/msdnmag/issues/07/06/DataPoints/default.aspx?loc=zh
    最新的MSDN杂志有介绍,大家看下,顺便结贴,谢谢大家帮助