我用 SQLDMO 杀完进程,恢复SQLServer数据库后就不可以访问数据库
数据库恢复时,要求其独占性,必须杀死相关的进程,才可以进行恢复操作。可是这样在完成恢复后,再去访问数据库就会出错,报错说是"常规网络错误,请检查网络文件" ,如果重新运行程序,一切就正常了。
请各位高手帮忙解决一下。
下面是杀死进程的代码,怎么才能在恢复数据库后再次启动该进程?
#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