天天看點

【轉載】在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