Asegúrese de que no tiene dependencias como instantáneas de base de datos en la base de datos que desea eliminar. Sin embargo, el mensaje de error sería diferente. ¿Estás seguro de que no hay ningún proceso oculto que se conecte a tu base de datos? Un buen enfoque sería ejecutar un script que mate todas las sesiones e inmediatamente después de cambiar el nombre de la base de datos a otro nombre y luego soltar la base de datos.
crear un cursor basado en esta selección:
select d.name , convert (smallint, req_spid) As spid
from master.dbo.syslockinfo l,
master.dbo.spt_values v,
master.dbo.spt_values x,
master.dbo.spt_values u,
master.dbo.sysdatabases d
where l.rsc_type = v.number
and v.type = 'LR'
and l.req_status = x.number
and x.type = 'LS'
and l.req_mode + 1 = u.number
and u.type = 'L'
and l.rsc_dbid = d.dbid
and rsc_dbid = (select top 1 dbid from
master..sysdatabases
where name like 'my_db')
problema dentro del cursor:
SET @kill_process = 'KILL ' + @spid
EXEC master.dbo.sp_executesql @kill_process
PRINT 'killed spid : '+ @spid
después de cerrar el cursor y desasignarlo:
sp_dboption 'my_db', 'single user', 'TRUE'
go
sp_renamedb 'my_db', 'my_db_old'
go
DROP DATABASE MY_DB_OLD