利用SQLDMQ来备份和还原MSSQL数据库.
SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口,所以它可以执行很多功能,其中当然也包括对数据库的备份和恢复。
下面了解下sqldmo的一些接口
SQLDMO.Backup
BackupSetName - 备份文件名。
Database - 要备份的数据库。
Action - 全部或增量备份。
BackupSetDescription - 备份说明。
Files - 文件备份选项。标明备份文件的路径和名字
Devices - 服务器上的备份装置。如果使用备份装置,上面的文件备份选项要设置为空。
TruncateLog - 备份日志选项。其选项有:
NoLog - 不备份交易日志。
NoTruncate - 备份交易日志。日志里提供时间标记。
Truncate - 备份交易日志,但不保留交易纪录。
Initialize - 如设置为真(True),该备份装置将取代其他备份媒介而成为首选。
1. 在.NET项目中添加对SQLDMO.dll的引用.
2.编码
备份:
public bool void DBBackup()
{
try
{
SQLDMO.Backup objBackup = new SQLDMO.BackupClass();
SQLDMO.SQLServer objSQLServer = new SQLDMO.SQLServerClass();
objSQLServer.LoginSecure = false; / /确定SQL验证方式...设为true则为身份验证
objSQLServer.Connect("localhost", "sa", "");
objBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
objBackup.Database = "数据库名称";
objBackup.Files = @" c:/数据库名称.bak";
objBackup.BackupSetName = "新数据库名称";
objBackup.BackupSetDescription = "数据库备份";
objBackup.Initialize = true;
objBackup.SQLBackup(objSQLServer);
return true;
}
catch
{
return false;
}
}
//还原
public bool void DbRestore()
{
bool result=false;
SQLDMO.Restore objRestore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer objSQLServer = new SQLDMO.SQLServerClass();
try
{
objSQLServer.LoginSecure = false;
objSQLServer.Connect("localhost", "sa", "");
objRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
objRestore.Database = "数据库名称";
objRestore.Files = @"c:/数据库名称.bak";
objRestore.FileNumber = 1;
objRestore.ReplaceDatabase = true;
objRestore.SQLRestore(objSQLServer);
result=true;
}
catch
{
result=false;
throw;
}
finally
{
objSQLServer.DisConnect();
}
return result;
}
对了,在还原的时候,要先杀死还原的数据库所关联的所有用户线程,然后再进行恢复,这样就不会存在因为数据库独占性引起的恢复错误。首先要杀掉库的所有进程,不过如何杀死进程的具体方法我也不会,