server.Databases [DatabaseName] .Drop (); терпит неудачу в MSTest - PullRequest
3 голосов
/ 24 ноября 2008

Выдается следующее исключение:

Сообщение об ошибке: 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 ]

6 голосов
/ 26 ноября 2008

Используйте метод Server.KillDatabase (string database) , который закрывает все открытые соединения для вас.

4 голосов
/ 24 ноября 2008

Интересно, мне интересно, учитывается ли ваш пул соединений против вас, т. Е. Вы ранее выполняли некоторые команды на SqlConnection, который теперь сохраняется для повторного использования. Вы можете попробовать отключить пул? (pooling = false в строке подключения, IIRC).

Кроме того - вы были осторожны, чтобы закрыть все ваши команды / подключения / читатели и т. Д.? В идеале через using? В крайнем случае, вы можете попробовать использовать T-SQL, чтобы убить все другие спиды с вашей машины - хак, но это может сработать.

...