1)在master数据库下建立下面的存储过程killspid。
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id(
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status<>-1
begin
exec('kill )
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
GO
2)还原数据库时,首先执行这个killspid存储过程:
SqlConnection masConn = new SqlConnection("Server=.;Database=master;User id=sa;Password=sa"); //注意是master数据库
masConn.Open();
SqlCommand kill = new SqlCommand("killspid",masConn);
kill.Parameters.Add("@dbname", SqlDbType.Char).Value = "数据库名";
kill.ExecuteNonQuery();
3)以上就断开了所有的用户连接,然后执行还原命令即可。
取消
评论