Hãy chắc chắn rằng bạn không có các phụ thuộc như ảnh chụp nhanh cơ sở dữ liệu trên db mà bạn muốn xóa. Mặc dù, thông báo lỗi sẽ nhìn khác. Bạn có chắc chắn rằng không có quá trình ẩn nào đang kết nối với cơ sở dữ liệu của bạn không? Một cách tiếp cận tốt sẽ là chạy một tập lệnh giết tất cả các phiên và ngay sau khi đổi tên cơ sở dữ liệu thành tên khác và sau đó bỏ cơ sở dữ liệu.
tạo một con trỏ dựa trên lựa chọn này:
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')
vấn đề bên trong con trỏ:
SET @kill_process = 'KILL ' + @spid
EXEC master.dbo.sp_executesql @kill_process
PRINT 'killed spid : '+ @spid
sau khi con trỏ được đóng lại và giải phóng:
sp_dboption 'my_db', 'single user', 'TRUE'
go
sp_renamedb 'my_db', 'my_db_old'
go
DROP DATABASE MY_DB_OLD