我用 SQLDMO 杀完进程,恢复SQLServer数据库后就不可以访问数据库

kadian 2008-04-04 10:35:20
数据库恢复时,要求其独占性,必须杀死相关的进程,才可以进行恢复操作。可是这样在完成恢复后,再去访问数据库就会出错,报错说是"常规网络错误,请检查网络文件" ,如果重新运行程序,一切就正常了。
请各位高手帮忙解决一下。
下面是杀死进程的代码,怎么才能在恢复数据库后再次启动该进程?
#region 杀死和要恢复的数据库有关的进程
   SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ;
   svr.Connect(server,user_id,pwd);
   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() == database.ToUpper())
  svr.KillProcess(lPID) ;
   }
   svr.DisConnect();
#endregion
...全文
141 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
喏喏_ 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
数据库恢复时,要求其独占性,必须杀死相关的进程,才可以进行恢复操作。可是这样在完成恢复后,再去访问数据库就会出错,报错说是"常规网络错误,请检查网络文件" ,如果重新运行程序,一切就正常了。
请各位高手帮忙解决一下。
下面是杀死进程的代码,怎么才能在恢复数据库后再次启动该进程?
#region 杀死和要恢复的数据库有关的进程
   SQLDMO.SQLServer svr = ne……
[/Quote]

楼主解决了么?说下方法
蝶恋花雨 2008-04-09
  • 打赏
  • 举报
回复
杀死进程后,数据库恢复后在让进程启动。也就是数据库启动
kadian 2008-04-09
  • 打赏
  • 举报
回复
如何重新启动数据库呢
andywiliang 2008-04-05
  • 打赏
  • 举报
回复




请高手坐阵本群管理员
C C++ C# JAVA编程交流群:11713348
CathySun118 2008-04-05
  • 打赏
  • 举报
回复
应该是恢复没有完成的吧
kadian 2008-04-05
  • 打赏
  • 举报
回复
恢复已经完成了,因为再次打开程序,可以看到数据库中数据的变化。
个人觉得应该是杀死的进程,不能再次启动。
哪位高手进来帮帮忙呀
scq2099yt 2008-04-04
  • 打赏
  • 举报
回复
up

110,549

社区成员

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

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

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