日期:2014-05-19  浏览次数:20869 次

C#还原SQL数据库时出错--数据库正在使用中,无法获取独占访问权!急....解决即给分
小弟用use   master   restore   database   xxx   from   disk= 'c:\bk.bak '   还原SQL数据库,但提示数据库在使用中,无法还原!

我用SQLDMO的方法试了一下,也不行,请问如何杀死连接此数据库的进程!

望高手给点思路或代码,多谢了!

------解决方案--------------------
http://blog.csdn.net/jame_peng/archive/2006/05/16/740373.aspx
------解决方案--------------------
先杀所用访问该数据库进程:
conn是master系统数据库的连接
//获取所有用户进程
string strSQL = "select spid from master..sysprocesses where dbid=db_id( '数据库名 ') "
SqlDataAdapter Da=new SqlDataAdapter(strSQL, conn);

DataTable spidTable=new DataTable;
Da.Fill(spidTable);

SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.Text;
Cmd.Connection = conn;

for (int iRow = 0; iRow <= spidTable.Rows.Count - 1; iRow++)
{
Cmd.CommandText= "kill " + spidTable.Rows[iRow][0].ToString(); //强行关闭用户进程
Cmd.ExecuteNonQuery();
}


------解决方案--------------------
我可以在本地把sql的事件查看器打开跟踪,然后再打开一个dtabase,还原它,看看跟踪过程是如何执行的