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

字號(hào):

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

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

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