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 ;
      }

  • 相关阅读:
    LeetCode OJ String to Integer (atoi) 字符串转数字
    HDU 1005 Number Sequence(AC代码)
    HDU 1004 Let the Balloon Rise(AC代码)
    HDU 1003 Max Sum(AC代码)
    012 Integer to Roman 整数转换成罗马数字
    011 Container With Most Water 盛最多水的容器
    010 Regular Expression Matching 正则表达式匹配
    007 Reverse Integer 旋转整数
    006 ZigZag Conversion
    005 Longest Palindromic Substring 最长回文子串
  • 原文地址:https://www.cnblogs.com/yank/p/840660.html
Copyright © 2011-2022 走看看