Sql server 使用drop database 语句,无法删除正在使用的数据库的解决办法
使用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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架