如何以编程方式从.NET代码中删除SQL Server数据库

Cra*_*rer 0 sql sql-server-2005

我正在尝试从.NET代码中删除SQL Server数据库.我已经尝试过使用SMO类,但得到一个例外,说数据库正在使用中.

然后我尝试执行一个查询(打开一个SqlConnection,执行一个SqlCommand),顺序如下:

ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)

(暂停)

DROP DATABASE foo
Run Code Online (Sandbox Code Playgroud)

但我仍然得到一个例外,说数据库正在使用中.

我该怎么做呢?(或者,SQL Server Management Studio如何实现Drop数据库并关闭现有连接?)

Dea*_*ing 6

您需要确保从主数据库中执行此操作:

USE master
GO

ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

DROP DATABASE foo
GO
Run Code Online (Sandbox Code Playgroud)

应该管用.顺便说一句,SQL Server Management Studio允许您查看它为GUI中的所有命令生成的脚本.例如,在"删除"窗口中,顶部有一个"脚本"菜单项,它将显示您可以使用的脚本.