動態備份SQL-SERVER數據庫——SQLDMO

大家最常見的是使用sql命令來進行數據庫備份,

最常用的sql語句如下:

backup  [dbname]   to   disk=[路徑+文件名]

restore  [dbname]   from   disk=[路徑+文件名]

 

另外可以使用SQLDMO來實現數據庫備份的功能

SQLDMOSQL Distributed Management ObjectsSQL分佈式管理對象)封裝 Microsoft SQL Server 2000 數據庫中的對象。SQL-DMO 允許用支持自動化或 COM 的語言編寫應用程序,以管理 SQL Server 安裝的所有部分。SQL-DMO  SQL Server 2000 中的 SQL Server 企業管理器所使用的應用程序接口 (API);因此使用 SQL-DMO 的應用程序可以執行 SQL Server 企業管理器執行的所有功能。

ASP.NET2005中要使用SQLDMO.DLL,首先要註冊這個組件。註冊SQLDMO.DLL組件的步驟:

1.“項目”——>“添加引用”——>COM”——>SQLDMO.DLL”這樣就可以註冊SQLDMO.DLL組件。

2.把在C:/Program Files/Microsoft SQL Server/80/Tools/Binn目錄下的動態鏈接庫SQLDMO.DLL文件。

3. DLL文件持拷貝到C:/WINDOWS/system32目錄下

4. C:/WINDOWS/system32目錄下建立一個新文件夾:resources,在裏面再建一個新文件夾2052,然後把RLL文件拷貝到2052.即放在C:/WINDOWS/system32/resources/2052目錄中

5.註冊:在開始>>運行>>(輸入)Regsvr32 C:/Program Files/Microsoft SQL Server/80/Tools/Binn/sqldmo.dll 回車。

 

註冊過SQLDMO.DLL組件後,在C#中使用這個組件來進行開發的方式有點不同。

C#Web程序中使用這個組件,要在“解決資源管理器”中添加上SQLDMO.DLL組件的引用。然後在項目的命名空間中添加“using SQLDMO;命名空間的引用,完成以上操作就可以在Web項目中使用這個組件了。

具體步驟:選中“解決資源管理器”的項目,右鍵,“添加引用”,然後在COM選項中選擇SQLDMO.DLL組件進行添加。

Windows項目中就不需要這麼麻煩,只要完成SQLDMO.DLL組件的步驟的註冊步驟,直接在Windows程序中可以添加此引用“using SQLDMO;”,就可以直接使用這個組件。

下面是用C#語言寫的備份和恢復Microsoft SQL Server數據庫的實現方式:

(提醒:首先要註冊SQLDMO.DLL組件WEB程序中使用SQLDMO.DLL組件,要添加SQLDMO.DLL的引用;在Windows項目中使用SQLDMO.DLL組件,註冊後直接添加using SQLDMO;

     ///<summary>

     /// 數據庫備份

/// 參數信息要備份的數據庫的名稱Backup .Database = "Northwind";

/// 另外一個是存放備份文件的路徑和文件名稱Backup .Files = @"c:/databak.bak";

     ///</summary>

    private   void   Button1_Click(object   sender,   System.EventArgs   e)  

      {

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

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

         try

          {

               SQLServer.LoginSecure = false;

               SQLServer.Connect("IP", "USERNAME", "PWD");

               Backup .Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMBackup _Database;

               Backup .Database = "Northwind";//要備份的數據庫的名稱,例如Northwind

               Backup .Files = @"c:/databak.bak";//存放路徑,和備份文件的名稱

               Backup .BackupSetName = "Northwind";

               Backup .BackupSetDescription = "數據庫備份";

               Backup .Initialize = true;

               Backup .SQLBackup(SQLServer);

          }

         Catch(Exception ex)

          {

              Throw ex;

          }

          finally

          {

               SQLServer.DisConnect();

          }

      }

     ///<summary>

     /// 數據庫恢復

/// 參數信息要恢復的數據庫的名稱Restore .Database = "Northwind_Res";

/// 另外一個是存放數據庫備份文件的路徑和文件名稱

/// Backup .Files = @"c:/databak.bak";用來恢復數據庫

     ///</summary>

    private   void   Button2_Click(object   sender,   System.EventArgs   e)

      {

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

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

         try

          {

               SQLServer.LoginSecure = false;

               SQLServer.Connect("IP", "USERNAME", "PWD");

               Restore .Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMRestore _Database;

               Restore .Database = "Northwind_Res";

               Restore .Files = @"C:/ databak.bak";

               Restore .FileNumber = 1;

               Restore .ReplaceDatabase = true;

               Restore .SQLRestore(SQLServer);

          }

         catch(Exception ex)

          {

              Throw ex;

          }

          finally

          {

               SQLServer.DisConnect();

          }

      }

}

其實這種方式是調用SQL-SERVER數據庫自帶的數據備份功能,這個功能是使用上面說過是兩個sql語句,只不過是形成了存儲過程的形式。在SQL-SERVER系統中有這兩個SQL命令生成的存儲過程,如下。

backup  [dbname]   to   disk=[路徑+文件名]

restore  [dbname]   from   disk=[路徑+文件名]

發佈了9 篇原創文章 · 獲贊 0 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章