zoukankan      html  css  js  c++  java
  • ASP.NET的sql数据库备份与回复<转载>

    ASP.NET下的SQL数据备份



            /**//// <summary>
            
    /// 数据库备份
            
    /// </summary>
            
    /// <returns>备份是否成功</returns>

            public bool DbBackup()
            
    {
                
    string conn,server,uid,pwd,database;
                conn 
    = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString();
                server 
    = StringCut(conn,"Source=",";");
                uid 
    = StringCut(conn,"UID=",";");
                pwd 
    = StringCut(conn,"Password=",";");
                database 
    = StringCut(conn,"database=",";");
                
    string path=this.TextBox2.Text.Trim();
                SQLDMO.Backup oBackup 
    = new SQLDMO.BackupClass();
                SQLDMO.SQLServer oSQLServer 
    = new SQLDMO.SQLServerClass();
                
    try
                
    {
                    oSQLServer.LoginSecure 
    = false;
                    oSQLServer.Connect(server,uid, pwd);
                    oBackup.Action 
    = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
                    oBackup.Database 
    = database;
                    oBackup.Files 
    = @path;
                    oBackup.BackupSetName 
    = database;
                    oBackup.BackupSetDescription 
    = "数据库备份";
                    oBackup.Initialize 
    = true;
                    oBackup.SQLBackup(oSQLServer);

                    
    return true;
                }

                
    catch(Exception ex)
                
    {
                    
    return false;
                    
    throw ex;
                }

                
    finally
                
    {
                    oSQLServer.DisConnect();
                }

            }

    数据库:SQL Server  ;引用SQLDMO
    ◆数据备份 :

     /// <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 remark = "备份测试";
       
       //◆数据备份:
       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 = remark;//备份描述
        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 ;
      }

    ◆数据还原 :
      /// <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 remark = "备份测试";

       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() == "Northwind".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 ;
      }

  • 相关阅读:
    (Good Bye 2019) Codeforces 1270B Interesting Subarray
    (Good Bye 2019) Codeforces 1270A Card Game
    Codeforces 1283D Christmas Trees(BFS)
    Codeforces 1283C Friends and Gifts
    Codeforces 1283B Candies Division
    1095 Cars on Campus (30)
    1080 Graduate Admission (30)
    1099 Build A Binary Search Tree (30)
    1018 Public Bike Management (30)
    1087 All Roads Lead to Rome (30)
  • 原文地址:https://www.cnblogs.com/yank/p/840660.html
Copyright © 2011-2022 走看看