如何使用sqldmo备份还原数据库

wanghaopeng wanghaopeng 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是备份的代码:
if (MessageBox.Show("您要备份数据库吗?", "备份数据库", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{

SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure = false;
oSQLServer.Connect("PC201012291333", "sa", "");//PC201012291333是我的机器名,sa没有设置密码
oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
oBackup.Database = "db_mhjg";//这是我的数据库名
oBackup.Files = @"C:\Documents and Settings\Administrator\桌面\123.bak";//这是我的备份文件路径和名称
oBackup.BackupSetName = "db_mhjg";
oBackup.BackupSetDescription = "数据库备份";
oBackup.Initialize = true;
oBackup.SQLBackup(oSQLServer);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
oSQLServer.DisConnect();
}

总是报错无法连接上,为什么呢?

下面这个是还原的代码:
                SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
try
{
svr.Connect("PC201012291333", "sa", "");
SQLDMO.QueryResults qr = svr.EnumProcesses(-1);
int iColPIDNum = -1;
int iColDbName = -1;
for (int i = 1; i <= qr.Columns; i++)
{
string strName = qr.get_ColumnName(i);
if (strName.ToUpper().Trim() == "SPID")
{
iColPIDNum = i;
}
else if (strName.ToUpper().Trim() == "DBNAME")
{
iColDbName = i;
}
if (iColPIDNum != -1 && iColDbName != -1)
break;
}

for (int i = 1; i <= qr.Rows; i++)
{
int lPID = qr.GetColumnLong(i, iColPIDNum);
string strDBName = qr.GetColumnString(i, iColDbName);
if (strDBName.ToUpper() == strDbName.ToUpper())
svr.KillProcess(lPID);
}


SQLDMO.Restore res = new SQLDMO.RestoreClass();
res.Action = 0;

res.Files = @"C:\Documents and Settings\Administrator\桌面\123.bak";//123.bak是已经被分好的数据库名字

res.Database = db_mhjg;//要备份的数据库
res.ReplaceDatabase = true;
res.SQLRestore(svr);
return true;
}
catch (Exception err)
{
throw (new Exception("恢复数据库失败,请关闭所有和该数据库连接的程序!" + err.Message));
//return false ;
//MessageBox.Show("恢复数据库失败,请关闭所有和该数据库连接的程序!"+err.Message);
}
finally
{
svr.DisConnect();
}


这两段代码总是不能执行,请各位大侠帮忙解决一下,看我哪里写错了,谢谢啦
...全文
评论 9
收藏 已收藏
分享
返回顶部
wanghaopeng
C# 111,128 成员 642,536 内容