/// <summary>
  /// 备份数据库
  /// </summary>
  private void btnBackUp_Click(object sender, System.EventArgs e)
  {
   this.Cursor = Cursors.WaitCursor;
   this.label1.Text = "  正在进行档案库的数据备份,这可能需要几秒到几十的时间,请稍候...";
   this.label1.Visible = true;
   this.label1.Refresh();
   this.pBar1.Visible = true;
   //------------------------------------------------------------------------------------   
   string selfName = “D:\NorthwindBak“;
   string deviceName = “NorthwindBak“;
   string re = "备份测试";
   
   //◆数据备份:
   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(Common.MySettings.SqlServerName, "sa", "");
    oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
    oBackup.Database = "Northwind";//数据库名
    oBackup.Files = selfName;//文件路径
    oBackup.BackupSetName = deviceName;//备份名称
    oBackup.BackupSetDescription = re;//备份描述
    oBackup.Initialize = true;
    oBackup.SQLBackup(oSQLServer);
    
   }
   catch(System.Exception ex)
   {
    Common.ShowMsg("数据备份失败:\n" + ex.ToString());
   }
   finally
   {
    oSQLServer.DisConnect();
   }   //------------------------------------------------------------------------------------
   this.label1.Visible = false;
   this.pBar1.Visible = false;
   this.Cursor = Cursors.Default;
  }
  /// <summary>
  /// 显示备份进度条
  /// </summary>
  private void Step(string message,int percent) 
  { 
   this.pBar1.Value = percent ; 
  }

解决方案 »

  1.   


    string str="";
    str="backup database jxc to disk='"+目录+"' WITH FORMAT";
    Form1.command.CommandText=str;
    try
    {
      Form1.command.ExecuteNonQuery();
      MessageBox.Show("数据备份成功!","提",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
    catch(Exception exp)
    {
      MessageBox.Show(exp.Message);
    }
      

  2.   

    /// <summary>
      /// 还原数据库
      /// </summary>
      private void btnRestore_Click(object sender, System.EventArgs e)
      {
       
       this.Cursor = Cursors.WaitCursor;
       this.label1.Text = "  正在进行档案库的数据还原,这可能需要几秒到几十的时间,请稍候...";
       this.label1.Visible = true;
       this.label1.Refresh();
       this.pBar1.Visible = true;
       //------------------------------------------------------------------------------------   string fileName = "NorthwindBak";
       string filePath = "D:\NorthwindBak";
       string re = "备份测试";   SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
       SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
       oRestore.Action = 0 ; 
       SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step); 
       oRestore.PercentComplete += pceh; 
       try
       {
                    oSQLServer.Connect(Common.MySettings.SqlServerName, "sa", "");
                    SQLDMO.QueryResults qr = oSQLServer.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() == "CgRecord".ToUpper()) 
                            oSQLServer.KillProcess(lPID) ; 
                    } 
        oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
        oRestore.Database = "Northwind";
        oRestore.Files = filePath;
        oRestore.FileNumber = 1;
        oRestore.ReplaceDatabase = true;
        oRestore.SQLRestore(oSQLServer);                
      }
                catch(System.Exception ex)
                {
                    Common.ShowMsg("数据还原失败:\n" + ex.ToString());
       }
       finally
       {
        oSQLServer.DisConnect();
       }
      
       //------------------------------------------------------------------------------------
       this.label1.Visible = false;
       this.pBar1.Visible = false;
       this.Cursor = Cursors.Default;
      }  /// <summary>
      /// 显示还原进度条
      /// </summary>
      private void Step(string message,int percent) 
      { 
       this.pBar1.Value = percent ; 
      }