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

  • 相关阅读:
    总结PLSQL的快捷键以及使用技巧
    WebStorm 常用快捷键
    bootStrap小结3
    bootStrap小结2
    bootStrap小结1
    DataTable操作
    2017春 前端自动化(一)构建工具的搭建
    前端自动化之(一)—浏览器自动实时刷新
    基于div表单模拟右对齐
    纯css去实现loading动画效果图
  • 原文地址:https://www.cnblogs.com/yank/p/840660.html
Copyright © 2011-2022 走看看