我试图删除一个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
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,任何到数据库的连接都将被终止,允许您删除它。