Sql server 使用drop database 语句,无法删除正在使用的数据库的解决办法

摘要:
使用DRODADATABASE删除数据库时,会显示“数据库当前正在使用中,因此无法删除。解决方案:在删除数据库(以下示例中为“DB1”数据库)之前,强制关闭数据库上的所有数据库连接。数据库“#Test”当前正在使用,因此无法将其删除--只需在查询分析器中执行以下语句.usemastergodeclare@dbnamesysnameset@Dbname='DB1'--这是要删除的数据库

使用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

免责声明:文章转载自《Sql server 使用drop database 语句,无法删除正在使用的数据库的解决办法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vi的剪切、复制、粘贴、删除通过Foxit和坚果云实现iPad和PC的pdf同步阅读(修改,笔记)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MongoDB基础命令及操作

MongoDB:NoSQL数据库 MongoDB中的重要指示点 MongoDB中的三要素 数据库 集合 文档 MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去记录的形式类似于json数据 MongoDB中集合中的数据不同于关系型数据库中的数据,MongoDB中文档结构可以不同,因此扩展性非常好 Mong...

Android开发学习路线图

通过前面的3篇博客已经简单的介绍了Android开发的过程并写了一个简单的demo,了解了Android开发的环境以及一些背景知识。 接下来这篇博客不打算继续学习Android开发的细节,先停一下,明确一下接下来的学习目标以及学习路线。 一、对Android开发的基本认识 1、Android原生开发是基于Java语言的,由于我比较擅长C#,所以对Java语...

不定字段数目的数据库表设计和数据结构

不定字段数目的数据库表设计和数据结构 可能采用四种技术: 动态增加数据库表字段 预留足够的空白字段,运行时作动态影射 用xml格式保存在单字段里 改列为行,用另外一个表存放定制字段 现在我们来分析一下四种技术的优劣,不过首先可以排除的是第一点动态增加字段的方法,因为在实际操作时候几乎是不可能的(sqlserver太慢,oracle索性不支持)...

Oracle版本区别[转载]

从ORACLE数据库产品,从ORACLE2.0开始(没有1.0)一直到ORACLE7.3.4都只是简单的版本号,但从ORACLE8开始,就出现数据库产品特性标识符,如ORACLE8i和9i,这个i是Internet的缩写,表示该产品全面支持Internet应用,简单一点说,就是融入了JAVA技术和对JAVA的支持.从ORACLE10称为10g,这个g是Gr...

织梦cms dedecms程序安装问题

织梦程序的安装及使用 程序安装使用 1.下载程序解压到本地目录; 2.上传程序目录中的/uploads到网站根目录 3.运行http://xxx.xxx.xxx/install/index.php(xxx.xxx.xxx表示你的域名) ,之后按照安装说明进行程序安装 注意事项: 1、安装时候,数据库地址、数据库用户、密码、数据库名这四项是空间商提供的,如果...

Django——orm概述及在django中使用

一、orm概述1 orm:对象关系映射(跟语言无关) 数据库中的表 ----》对应程序的一个类 数据库中的一行数据----》对应程序中的一个对象 2 python中常见orm框架 -django的orm框架 -sqlachemy orm框架 3 java:(扩展),java中写web项目...