SQLDMO (SQL Distributed Management Objects,SQL 分散式管理物件) 封裝了 Microsoft SQL Server 資料庫中的物件。SQLDMO 是 Microsoft SQL Server 企業管理員所使用的應用程式介面,因此當然包含資料庫備份與還原功能。
SQLDMO 由 Microsoft SQL Server 附帶的 SQLDMO.dll 提供,因 SQLDMO.dll 為 COM 物件,故在 .NET 專案中使用前必須加入對它的參考。
下面是用 C# 撰寫的 Microsoft SQL Server 資料庫備份與還原類別:
using System;
namespace DbService
{
/// <summary>
/// DbOper 類別,主要應用 SQLDMO 實現對 Microsoft SQL Server 資料庫的備份與還原
/// </summary>
public sealed class DbOper
{
/// <summary>
/// DbOper 類別建構函數
/// </summary>
private DbOper() { }
/// <summary>
/// 資料庫備份
/// </summary>
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();
}
}
/// <summary>
/// 資料庫還原
/// </summary>
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();
}
}
}
}
這段代碼雖短卻實用,希望能幫助大家。