use master
--一定要进入MASTER库先
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('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status < >-1
begin
exec('kill '+@spid)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
--建过程killspid于MASTER库
--用法
use master
exec killspid '待修改数据库名'
--之后就可以使用sp_renamedb
EXEC sp_renamedb '待修改数据库名', '新数据库名'
此情况下肯定是正在操作要改名的数据库
如果你确定有哪些连接打开了数据库,可以手工关掉连接,比如你正在设计一个表等。
如果你不能确定有哪些连接,可以用以下语句
alter database test set multi_user with rollback after 3
意思是有3秒的时间来回滚你对数据库所作的操作,并将数据库设置在多用户模式下,此时就要以sp_renamedb了