sqldmo(sql distributed management objects,sql分布式管理對象)封裝了microsoft sql server數據庫中的對象。sqldmo是microsoft sql server中企業管理器所使用的應用程序接口,所以它可以執行很多功能,其中當然也包括對數據庫的備份和恢復。
當然要用到 sqldmo 來做這個工作
找到 sqldmo.dll這個文件
c:/program files/microsoft sql server/80/tools/binn/sqldmo.dll
用.net框架提供的工具轉成受托管代碼
tlbimp sqldmo.dll /out: c:/sqldmo.dll
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();
}
}
}
}
新聞熱點
疑難解答