Sql server 使用drop database 语句,无法删除正在使用的数据库的解决办法
2024-08-29 23:41:34
使用DROP DATABASE 删除数据库 显示“无法删除数据库 ,因为该数据库当前正在使用。
解决办法:在删除某一个数据库(下例中的“DB1”数据库)前,强制kill掉该数据库上的所有数据库连接。
无法删除数据库 "#Test",因为该数据库当前正在使用 --查询分析器中执行下面的语句就行了. use master
go declare @dbname sysname
set @dbname='DB1' --这个是要删除的数据库库名 declare @s nvarchar(1000)
declare tb cursor local for
select s='kill '+cast(spid as varchar)
from master..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+']')
如果不想用游标,也可以用循环,如下所示:
CREATE PROCEDURE [dbo].[SP_DropDatabase]
@databaseName nvarchar(100)
AS
BEGIN
DECLARE @spid INT=NULL SELECT @SPID=spid FROM master..sysprocesses WHERE dbid=DB_ID(@databaseName) WHILE @spid IS NOT NULL
BEGIN
DECLARE @killScript NVARCHAR(200)=N'KILL '+CAST(@spid AS NVARCHAR(50)) EXEC sp_executesql @killScript SET @spid=NULL
SELECT @SPID=spid FROM master..sysprocesses WHERE dbid=DB_ID(@databaseName)
END DELETE FROM [dbo].[T_ClientScriptDetails] WHERE ClientName=@databaseName
DELETE FROM [dbo].[T_ClientScripts] WHERE ClientName=@databaseName DECLARE @dropScript NVARCHAR(200)=N'DROP DATABASE ['+@databaseName+N']'
EXEC sp_executesql @dropScript END
最新文章
- 使用Nodejs+mongodb开发地图瓦片服务器
- springmvc学习(五)——处理模型数据
- Windows 8/8.1系统下硬盘占用率100%的问题解决思路汇总
- PHP 8: PHP的运算符
- 解决MySQL 在 Java 检索遇到timestamp空值时报异常的问题
- linux kvm虚拟机使用
- SpringBoot中使用JNnit4(入门篇)
- Angular记录(7)
- 同一个世界(erlang解题答案)
- WIN下修改host文件并立即生效
- 从零开始实现RPC框架 - RPC原理及实现
- Python 全栈开发十一 深浅拷贝
- L2-001. 紧急救援(最短路的变形)*
- foreman自动化工具安装使用
- SSH &; Git
- 【Java】SAX解析characters 错误截取问题的解决
- CSS知识点集锦
- clientHeight , scrollHeight , offsetHeight之间的区别
- win7 +v Ubuntu 16.04 grub rescue 模式下修复 grub
- 安装SQL Servre2000时提示“command line option syntax error! type command /? for help”