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語句來刪除數據庫和其數據庫文件了。

 

出處:https://www.cnblogs.com/OpenCoder/p/11937657.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM