数据备份还原,大侠帮忙看看

Dark80 2004-10-22 09:20:38
这是参考别人的贴子做的数据备份还原的代码,出错...
大侠帮忙找找问题,一定给分! (SQL SERVER 2000)

private void btnRestore_Click(object sender, System.EventArgs e)
{
if(this.dgBackUpList.CurrentRowIndex < 0 || this.dtBackUpList.Rows.Count < 1)
{
Common.ShowMsg("请从列表中选择一个备份进行还原:");
return;
}

string fileName = this.dtBackUpList.Rows[this.dgBackUpList.CurrentRowIndex]["fileName"].ToString();
string filePath = this.dtBackUpList.Rows[this.dgBackUpList.CurrentRowIndex]["filePath"].ToString();
string remark = this.dtBackUpList.Rows[this.dgBackUpList.CurrentRowIndex]["remark"].ToString();

if(!System.IO.File.Exists(filePath))
{
Common.ShowMsg("该数据备份的备份文件已被移走,无法进行还原。");
return;
}

if(!Common.ShowConfirm("您确认要恢复该备份吗?"))
return;


SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
oRestore.Action = 0 ; oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
oRestore.Database = "CgFyDB";
oRestore.Files = filePath;
oRestore.FileNumber = 1;
oRestore.ReplaceDatabase = true;
oRestore.SQLRestore(oSQLServer);


}
catch(System.Exception ex)
{
Common.ShowMsg("数据还原失败:\n" + ex.ToString());
}
finally
{
oSQLServer.DisConnect();
}

}
...全文
124 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Anhowe 2004-11-17
  • 打赏
  • 举报
回复
有一个问题,就是备份远程数据库时,生成的备份文件在远程服务器上,如何客户端备份得到远程数据库的备份文件“*.bak"???
急急!!!

谢谢!!!

麻烦清楚的发份资料到anhowe@126.com好吗,谢谢!!!
Eddie005 2004-10-22
  • 打赏
  • 举报
回复
是不是提示什么 ... 需要排它性权限... 之类的话?

如果是,那么需要加入下面代码,作用是kill掉跟该数据库连接的进程:

.............................
oSQLServer.Connect(Common.MySettings.SqlServerName, "sa", "");

SQLDMO.QueryResults qr = oSQLServer.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() == "CgFyDB".ToUpper())
oSQLServer.KillProcess(lPID) ;
}


oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
...................
xiangyangsunboy1 2004-10-22
  • 打赏
  • 举报
回复
在哪里出错了啊?
Eddie005 2004-10-22
  • 打赏
  • 举报
回复
提示什么错误?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧