首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 運用 SQL-DMO 備份與還原 SQL Server 資料庫:完整類別實作

     編輯:關於C#

SQL-DMO 簡介

SQL Distributed Management Objects (SQL-DMO) 封裝 SQL Server 管理物件,企業管理器即建構於此。透過 SQLDMO.dll (COM 組件) 可程式化執行備份、還原、建立資料庫等管理工作。

使用前需在專案「加入參考」→ COM 標籤選擇 Microsoft SQLDMO Object Library。

完整備份/還原類別

using System;
using SQLDMO; // 需參考 SQLDMO.dll

namespace DbService
{
    public sealed class DbOper
    {
        private DbOper() { } // 靜態類別模式

        /// 完整資料庫備份
        public static void DbBackup()
        {
            Backup oBackup = new BackupClass();
            SQLServer oServer = new SQLServerClass();

            try
            {
                oServer.LoginSecure = false; // SQL Server 驗證
                oServer.Connect("localhost", "sa", "1234"); // 實際請從設定檔讀取

                oBackup.Action = SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
                oBackup.Database = "Northwind";
                oBackup.Files = @"d:\Northwind.bak";
                oBackup.BackupSetName = "Northwind";
                oBackup.BackupSetDescription = "資料庫備份";
                oBackup.Initialize = true; // 覆寫現有備份檔

                oBackup.SQLBackup(oServer);
            }
            catch { throw; }
            finally { oServer.DisConnect(); }
        }

        /// 資料庫還原
        public static void DbRestore()
        {
            Restore oRestore = new RestoreClass();
            SQLServer oServer = new SQLServerClass();

            try
            {
                oServer.LoginSecure = false;
                oServer.Connect("localhost", "sa", "1234");

                oRestore.Action = SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
                oRestore.Database = "Northwind";
                oRestore.Files = @"d:\Northwind.bak";
                oRestore.FileNumber = 1; // 備份集編號
                oRestore.ReplaceDatabase = true; // 允許覆蓋現有資料庫

                oRestore.SQLRestore(oServer);
            }
            catch { throw; }
            finally { oServer.DisConnect(); }
        }
    }
}

關鍵屬性說明

屬性用途
Action指定操作類型:Database/Files/Log
Database目標資料庫名稱
Files備份檔完整路徑
Initializetrue=覆寫備份檔,false=附加
FileNumber備份檔內第幾組備份集 (通常為 1)
ReplaceDatabasetrue=允許還原覆蓋現有 DB

進階應用方向

  • 差異備份、交易記錄備份 (Point-in-time recovery)。
  • 備份壓縮、加密、鏡像備份至多磁碟。
  • 還原至不同資料庫名稱/路徑 (Relocate)。
  • 整合至排程作業 (SQL Agent / Windows Task)。

注意事項

  • SQL-DMO 為舊技術,SQL Server 2005+ 建議改用 SMO (SQL Server Management Objects),為 .NET 原生組件,功能更強、效能更好。
  • 生產環境嚴禁硬編碼連線字串與密碼,請使用加密設定檔。
  • 備份/還原需具備 sysadmin 或 db_backupoperator/dbcreator 角色權限。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved