天天看點

在C#中運用SQLDMO備份和恢複SQL Server資料庫

SQLDMO(SQL Distributed Management Objects,SQL分布式管理對象)封裝了Microsoft SQL Server資料庫中的對象。SQLDMO是Microsoft SQL Server中企業管理器所使用的應用程式接口,是以它可以執行很多功能,其中當然也包括對資料庫的備份和恢複。

SQLDMO由Microsoft SQL Server自帶的SQLDMO.dll提供,由于SQLDMO.dll是一個COM對象(有關COM的概念,請參看我的COM與COM+技術那篇文章),是以大家在用之前必須在.Net項目中添加對它的引用。

下面是用C#語言書寫的用于Microsoft SQL Server資料庫備份和恢複的類:

public  sealed  class  DbOper

{

     ///<summary>

     /// DbOper類的構造函數

///作者:Shadow

     ///</summary>

     private DbOper()

     {

     }

     /// 資料庫備份

     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();

     /// 資料庫恢複

     public  static  void DbRestore()

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

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

         }