C#備份和恢復(fù)SQLServer數(shù)據(jù)庫

字號:

SQLDMO(SQL Distributed Management Objects,SQL分布式管理對象)封裝了Microsoft SQL Server數(shù)據(jù)庫中的對象。SQLDMO是Microsoft SQL Server中企業(yè)管理器所使用的應(yīng)用程序接口,所以它可以執(zhí)行很多功能,其中當然也包括對數(shù)據(jù)庫的備份和恢復(fù)。
    SQLDMO由Microsoft SQL Server自帶的SQLDMO.dll提供,由于SQLDMO.dll是一個COM對象(有關(guān)COM的概念,請參看我的COM與COM+技術(shù)那篇文章),所以大家在用之前必須在.Net項目中添加對它的引用。
    下面是用C#語言書寫的用于Microsoft SQL Server數(shù)據(jù)庫備份和恢復(fù)的類:
    public sealed class DbOper
    {
     ///
     /// DbOper類的構(gòu)造函數(shù)
    ///作者:Shadow
     ///

     private DbOper()
     {
     }
     ///
     /// 數(shù)據(jù)庫備份
     ///

     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 = "數(shù)據(jù)庫備份";
     oBackup.Initialize = true;
     oBackup.SQLBackup(oSQLServer);
     }
     catch
     {
     throw;
     }
     finally
     {
     oSQLServer.DisConnect();
     }
     }
     ///
     /// 數(shù)據(jù)庫恢復(fù)
     ///

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