SQL Server中使用SQL语句关闭数据库连接和删除数据库文件
问题描述
今天在SQL Server删除一个数据库的时候报错,内容如下:
消息 3702,级别 16 无法删除数据库 “TestDB”,因为该数据库当前正在使用。
我的SQL原语句是这样的
USE [master] GO DROP DATABASE [TestDB] GO
上网搜了一下,找到了解决办法,也在这里记录一下。
解决方案
有时候我们想用DROP DATABASE语句删除数据库和数据库文件,会删不掉,因为有其他人正在使用要删除的数据库,这里有一个方法可以强制断开其它数据库连接,再删除数据库。
网上有很多是说要将数据库回滚到原始配置状态的解决方案的文章,例如:
原文链接:http://www.2cto.com/database/201210/160122.html
删除数据库时提示数据库正在被使用,无法删除(Cannot drop database databasename because it is currently in use)的问题
删除数据库时提示数据库正在被使用,无法删除(Cannot drop database databasename because it is currently in use)
这是因为在操作数据库中出现了问题,比如连接数据库后,打开了数据库连接,用完后没有正确关闭,这时就可能会导致这种情况出现。
那么现在给出解决方案: www.2cto.com
use master
go
alter database database_name set single_user with rollback immediate
--将数据库回滚到原始配置状态
go
drop database database_name--删除数据库
go
注:database_name为要删除的数据库名称。
我用的是sqlserver2008 ,可以解决问题
出处:https://blog.csdn.net/home_zhang/article/details/37690005
我们就来研究下,假如我们要删除的数据库是[TestDB],我们可以用下面的语句:
USE [master]--注意不能够USE [TestDB],因为[TestDB]即将被删除,所以不能够将当前连接设置为连接到[TestDB],否则下面的DROP DATABASE语句会报错 GO ALTER DATABASE [TestDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;--首先将数据库改为单用户模式,WITH ROLLBACK IMMEDIATE提示切断所有其它连接到[TestDB]的数据库连接 GO DROP DATABASE [TestDB];--删除[TestDB]及其数据库文件 GO
所以这个方法的核心就是先更改数据库模式为单用户模式"SINGLE_USER",那么什么是数据库的单用户模式呢?我这里贴出一个从网上找到的解释:
So in single_user mode - you would be quite unlikely to have locking problems in that database. It is what it sounds like - single user - and it doesn't mean Single Username - it means one user. So it's used when you as a DBA want to do something that can't be done with others users in. Maybe you are trying to do a repair option of a checkdb. Maybe you are trying to change some object metadata and don't have a better way to kick other users out. Etc.
上面的解释来自:What happens when SQL Server is in Single User Mode?
所以数据库单用户模式"SINGLE_USER",是指只能有一个用户连接能够连接到数据库,这样我们就可以在没有其它数据库连接的情况下,执行DROP DATABASE语句来删除数据库和其数据库文件了。
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/14270952.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
posted on 2021-01-13 11:00 jack_Meng 阅读(4086) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-01-13 关于svn外网访问的问题-搭建成功
2020-01-13 ProgressBar.Style ---- Marquee
2020-01-13 C#中的Task.Delay()延迟与异步执行返回结果