Как программно удалить базу данных SQL Server из кода .NET - PullRequest
0 голосов
/ 19 марта 2010

Я пытаюсь удалить базу данных SQL Server из кода .NET. Я попытался использовать классы SMO, но получил исключение, сообщив, что база данных используется.

Затем я попытался выполнить запрос (открыть SqlConnection, выполнить SqlCommand), например:

ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE

(пауза)

DROP DATABASE foo

Но все же я получаю исключение о том, что база данных используется.

Как мне это сделать? (Или как SQL Server Management Studio реализует базу данных удаления и закрывает существующие подключения?)

Ответы [ 2 ]

5 голосов
/ 19 марта 2010

Вы должны убедиться, что вы делаете это из основной базы данных:

USE master
GO

ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

DROP DATABASE foo
GO

Должно работать. Кстати, SQL Server Management Studio позволяет просматривать сценарий, который он генерирует для всех команд в графическом интерфейсе. Например, в окне «Удалить» вверху есть пункт меню «скрипт», который покажет вам сценарий, который вы можете использовать.

3 голосов
/ 19 марта 2010

Это может быть глупый вопрос, но в строке подключения вы подключаетесь к базе данных, которую вы пытаетесь удалить, или к базе данных Master на том же сервере? Если вы пытаетесь удалить базу данных, к которой вы активно подключены, это наверняка объяснит ошибку.

Также имейте в виду, что ADO.NET поддерживает соединения открытыми, используя пул соединений . Поэтому, даже если вы не выполняете активно запросы с использованием заданной строки соединения, соединения все равно могут быть открыты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...