1.删除某一数据库中所有外键约束
declare @sql varchar(max),
@tab_name varchar(128),
@fk_name varchar(128);
declare c cursor for
select OBJECT_NAME(parent_object_id), name from sys.objects where type='F'
open c
fetch next from c into @tab_name, @fk_name
while @@FETCH_STATUS=0
begin
set @sql='';
set @sql='alter table ' + @tab_name + ' drop constraint ' + @fk_name
print @sql
exec(@sql)
fetch next from c into @tab_name, @fk_name
end
close c
deallocate c
2. 删除某一数据时提示“该数据库正在使用中”
use master
go
declare @dbname sysname
set @dbname = 'BigValuesTest' --这个是要删除的数据库库名
declare @s nvarchar(1000)
declare tb cursor local
for
select s = 'kill ' + cast(spid as varchar)
from master.dbo.sysprocesses
where dbid = DB_ID(@dbname)
open tb
fetch next from tb into @s
while @@fetch_status = 0
begin
exec (@s)
fetch next from tb into @s
end
close tb
deallocate tb
exec ('drop database [' + @dbname + ']')
参考文献
无法删除数据库,因为该数据库当前正在使用"问题解决
SQLServer删除所有外键