sqlserver备份还原数据库功能封装分享

 更新时间:2014年03月02日 14:46:08   投稿:zxhpj  
这篇文章主要介绍了sqlserver备份还原数据库功能封装示例,需要的朋友可以参考下


复制代码 代码如下:

using System;
using SQLDMO;

namespace EDTBackupTool
{
 /// <summary>
 /// Backup 的摘要说明。
 /// </summary>
 public class SQLTools
 { 
  public static bool Backup(string backfile){
   try
   {
    SQLDMO.Backup backup = new BackupClass();
    SQLDMO.SQLServer server = new SQLServerClass();
    server.LoginSecure = true;     
    server.Connect(ClientCommon.CommonFunctions.DataSource,"sa","");      
    backup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
    backup.Database = ClientCommon.CommonFunctions.Catalog;
    backup.Files =backfile;
    backup.BackupSetName =ClientCommon.CommonFunctions.Catalog;
    backup.BackupSetDescription = "数据库备份";
    backup.Initialize = true;    
    backup.SQLBackup(server);  
    return true;
   }
   catch(Exception ex){
    ClientCommon.ExceptionRecorder.Record(ex);
    return false;
   }
  }

  public static bool RestoreDB(string strFileName)
  {
   SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ;
   try
   {
    svr.LoginSecure=true;    
    svr.Connect(ClientCommon.CommonFunctions.DataSource,"sa","") ;   
    SQLDMO.QueryResults qr = svr.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() == ClientCommon.CommonFunctions.Catalog)
     {
      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() == ClientCommon.CommonFunctions.Catalog)
     {
      svr.KillProcess(lPID) ;
     }
    }
               
    SQLDMO.Restore res = new SQLDMO.RestoreClass() ;
    res.Action = 0 ;
    res.Files = strFileName ;

    res.Database = ClientCommon.CommonFunctions.Catalog ;
    res.ReplaceDatabase = true ;
    res.SQLRestore(svr) ;
    return true ;
   }
   catch
   {
    return false;
   }
   finally
   {
    svr.DisConnect() ;
   }
  }
 }
}

相关文章

  • C#重载运算符详解

    C#重载运算符详解

    这篇文章主要介绍了C#重载运算符,是进行C#程序设计中非常重要的一个技巧,需要的朋友可以参考下
    2014-08-08
  • 解决C#调用dll提示

    解决C#调用dll提示

    下面小编就为大家分享一篇解决C#调用dll提示"试图加载格式不正确的程序"问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 解决C#中取消方向键对控件焦点控制的实现方法

    解决C#中取消方向键对控件焦点控制的实现方法

    本篇文章是对C#中取消方向键对控件焦点控制的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • unity实现多点触控代码

    unity实现多点触控代码

    这篇文章主要介绍了unity实现多点触控代码,我最近在学习Unity游戏引擎。先从Unity平面开始,本章介绍Unity 平面上的多点触摸。有需要的小伙伴参考下。
    2015-03-03
  • C# 泛型集合的自定义类型排序的实现

    C# 泛型集合的自定义类型排序的实现

    这篇文章主要介绍了C# 泛型集合的自定义类型排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • C# 开发step步骤条控件详解

    C# 开发step步骤条控件详解

    本篇文章主要介绍了用C#来实现一个step控件的方法步骤,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • c# Parallel类的使用

    c# Parallel类的使用

    这篇文章主要介绍了c# Parallel类的使用,帮助大家实现数据与任务的并行,感兴趣的朋友可以了解下
    2020-11-11
  • Unity实现文本转贴图

    Unity实现文本转贴图

    这篇文章主要为大家详细介绍了Unity实现文本转贴图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • C#使用Dispose模式实现手动对资源的释放

    C#使用Dispose模式实现手动对资源的释放

    这篇文章主要介绍了C#使用Dispose模式实现手动对资源的释放,涉及C#采用Dispose模式操作资源的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C#对文件进行加密解密代码

    C#对文件进行加密解密代码

    本文给大家分享的是使用C#对文件进行加密解密的代码,十分的简单实用,有需要的小伙伴可以参考下。
    2015-07-07

最新评论