Resources Up

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.