declare @s nvarchar(1000),@dbname varchar(200)
set @dbname='数据库名称'declare tb cursor local 
for
select N'kill '+cast(spid as varchar)
from master..sysprocesses 
where dbid=db_id(@dbname)open tb 
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb

解决方案 »

  1.   

    --当然你不能在当前库操作,这个语句,你可以在非当前库操作如:Use MasterUse master
    declare @s nvarchar(1000),@dbname varchar(200)
    set @dbname='数据库名称'declare tb cursor local 
    for
    select N'kill '+cast(spid as varchar)
    from master..sysprocesses 
    where dbid=db_id(@dbname)open tb 
    fetch next from tb into @s
    while @@fetch_status=0
    begin
    exec(@s)
    fetch next from tb into @s
    end
    close tb
    deallocate tb
      

  2.   

    循环删除所有访问当前数据的进程,但先连接到其他数据库,如:master
    按照一楼的做法
      

  3.   

    最好是用这个
    ALTER DATABASE Northwind SET SINGLE_USER WITH ROLLBACK IMMEDIATE