如何强制一滴MSSQL服务器数据库

我试图删除一个MSSQL服务器数据库,但我没有运气。 我已经尝试了多个东西,如

user ALTER DATABASE my_database SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE; GO DROP DATABASE my_database; GO 

我也试图右键点击它删除它。

这不起作用,它告诉我“无法删除数据库”ima_debts“,因为它目前正在使用”。 事情是肯定没有其他用户连接到它。 事实上,我禁用数据库的TCP / IP并重新启动它。

甚至连“Microsoft SQL Server Management Studio(pipe理员)”都连接到它。 我已经确保login到“主”。

为什么它告诉我,它目前正在使用。 我可能删除文件系统中的某个目录或某个东西来摆脱这个数据库吗?

任何帮助,将不胜感激。

谢谢。

有时智能感知和/或pipe理工作室将挂起连接打开只是因为你点击对象资源pipe理器中的数据库。 另外,如果您有任何访问数据库的SQL代理作业,则不会通过禁用TCP / IP来停止这些作业。

无论如何,下面的脚本将通过将数据库放入会话中的单用户模式来“接pipe”数据库,然后将其置于脱机状态,以便没有人能够连接到它以运行查询。

然后,您可以使用Management Studio或T-SQL删除数据库。

 USE [MyDB]; GO ALTER DATABASE [MyDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE [MyDB] SET OFFLINE; GO 

http://www.morgantechspace.com/2013/11/Cannot-drop-database-because-it-is-currently-in-use-in-MS-SQL-Server.html

 USE [master] GO ALTER DATABASE [TestDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO USE [master] GO /****** Object: Database [TestDB] Script Date: 11/29/2013 13:40:36 ******/ DROP DATABASE [TestDB] GO 

在C#

 public static void DeleteDataBase() { using (SqlConnection sqlconnection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=master;Integrated Security=SSPI;")) { sqlconnection.Open(); // if you used master db as Initial Catalog, there is no need to change database sqlconnection.ChangeDatabase("master"); string rollbackCommand = @"ALTER DATABASE [TestDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE"; SqlCommand deletecommand = new SqlCommand(rollbackCommand, sqlconnection); deletecommand.ExecuteNonQuery(); string deleteCommand = @"DROP DATABASE [TestDB]"; deletecommand = new SqlCommand(deleteCommand, sqlconnection); deletecommand.ExecuteNonQuery(); } } 

当您在SSMS中删除它时,会出现一个checkbox,显示“closures现有连接”。 此checkbox默认情况下未被选中。 选中该checkbox,任何到数据库的连接都将被终止,允许您删除它。