天天看点

【转载】在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库

在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库

SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口,所以它可以执行很多功能,其中当然也包括对数据库的备份和恢复。

      SQLDMO由Microsoft SQL Server自带的SQLDMO.dll提供,由于SQLDMO.dll是一个COM对象,所以大家在用之前必须在.NET项目中添加对它的引用,如下图所示:

【转载】在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库

下面是用C#语言书写的用于Microsoft SQL Server数据库备份和恢复的类:

using  System;

namespace  DbService

{

  ///   <summary>

  ///  DbOper类,主要应用SQLDMO实现对Microsoft SQL Server数据库的备份和恢复

  ///   </summary>

  public   sealed   class  DbOper

 {

   ///   <summary>

   ///  DbOper类的构造函数

   ///   </summary>

   private  DbOper()

  {

  }

   ///   <summary>

   ///  数据库备份

   ///   </summary>

   public   static   void  DbBackup()

  {

   SQLDMO.Backup oBackup  =   new  SQLDMO.BackupClass();

   SQLDMO.SQLServer oSQLServer  =   new  SQLDMO.SQLServerClass();

    try

   {

    oSQLServer.LoginSecure  =   false ;

    oSQLServer.Connect( " localhost " ,  " sa " ,  " 1234 " );

    oBackup.Action  =  SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;

    oBackup.Database  =   " Northwind " ;

    oBackup.Files  =   @" d:\Northwind.bak " ;

    oBackup.BackupSetName  =   " Northwind " ;

    oBackup.BackupSetDescription  =   " 数据库备份 " ;

    oBackup.Initialize  =   true ;

    oBackup.SQLBackup(oSQLServer);

   }

    catch

   {

     throw ;

   }

    finally

   {

    oSQLServer.DisConnect();

   }

  }

   ///   <summary>

   ///  数据库恢复

   ///   </summary>

   public   static   void  DbRestore()

  {

   SQLDMO.Restore oRestore  =   new  SQLDMO.RestoreClass();

   SQLDMO.SQLServer oSQLServer  =   new  SQLDMO.SQLServerClass();

    try

   {

    oSQLServer.LoginSecure  =   false ;

    oSQLServer.Connect( " localhost " ,  " sa " ,  " 1234 " );

    oRestore.Action  =  SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;

    oRestore.Database  =   " Northwind " ;

    oRestore.Files  =   @" d:\Northwind.bak " ;

    oRestore.FileNumber  =   1 ;

    oRestore.ReplaceDatabase  =   true ;

    oRestore.SQLRestore(oSQLServer);

   }

    catch

   {

     throw ;

   }

    finally

   {

    oSQLServer.DisConnect();

   }

  }

 }

}

转载于:https://www.cnblogs.com/Jaylong/archive/2011/06/10/C12.html