use master
go
declare @dbname varchar(30), @spid varchar(10), @start datetime
select @start = current_timestamp, @dbname = 'pubs'
-- Timeout after 5 mts
while(exists(Select * from sysprocesses where dbid = db_id(@dbname)) and
datediff(mi, @start, current_timestamp) < 5)
begin
declare spids cursor for
select convert(varchar, spid) from sysprocesses
where dbid = db_id(@dbname)
open spids
while(1=1)
begin
fetch spids into @spid
if @@fetch_status < 0 break
exec('kill ' + @spid)
end
deallocate spids
end
if not exists(Select * from sysprocesses where dbid = db_id(@dbname))
exec sp_dboption @dbname, offline, true
else
begin
print 'The following processes are still using the database:'
select spid, cmd, status, last_batch, open_tran, program_name, hostname
from sysprocesses
where dbid = db_id(@dbname)
end
go
This page was last updated on May 01, 2006 04:28 PM.