有時候我們想用DROP DATABASE語句刪除數據庫和數據庫文件,會刪不掉,因為有其他人正在使用要刪除的數據庫,這里有一個方法可以強制斷開其它數據庫連接,再刪除數據庫。
假如我們要刪除的數據庫是[TestDB],我們可以用下面的語句:
USE [master]--注意不能夠USE [TestDB],因為[TestDB]即將被刪除,所以不能夠將當前連接設置為連接到[TestDB],否則下面的DROP DATABASE語句會報錯 ALTER DATABASE [TestDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;--首先將數據庫改為單用戶模式,WITH ROLLBACK IMMEDIATE提示切斷所有其它連接到[TestDB]的數據庫連接 DROP DATABASE [TestDB];--刪除[TestDB]及其數據庫文件
所以這個方法的核心就是先更改數據庫模式為單用戶模式"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語句來刪除數據庫和其數據庫文件了。
