server.Databases [的databaseName] .Drop();在MSTest失败

时间:2008-11-24 20:44:19

标签: c# .net sql-server-2005 smo

抛出以下异常:

错误消息:Microsoft.SqlServer.Management.Smo.FailedOperationException:数据库'4d982a46-58cb-4ddb-8999-28bd5bb900c7'的删除失败。 ---> Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行Transact-SQL语句或批处理时发生异常。 ---> System.Data.SqlClient.SqlException:无法删除数据库“4d982a46-58cb-4ddb-8999-28bd5bb900c7”,因为它当前正在使用中。

知道是什么导致了这个吗?

是否可以调用SMO函数来完成任何正在运行的Transact-SQL语句?

2 个答案:

答案 0 :(得分:6)

使用Server.KillDatabase(string database)方法关闭所有打开的连接。

答案 1 :(得分:4)

作为猜测,我想知道你的连接池是否对你不利 - 即你之前在SqlConnection上执行了一些命令,现在它们被重新使用。您可以尝试禁用池化? (连接字符串中的pooling = false,IIRC)。

另外 - 你是否小心关闭所有命令/连接/读者等?理想情况下通过using?作为最后的手段,你可以尝试使用T-SQL来杀死你机器上的所有其他spid - hacky,但它可能会有效。