Я активно занимаюсь разработкой своей схемы в SQL Server 2008 и часто хочу перезапустить сценарий удаления / создания базы данных. Когда я бегу
USE [master]
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDatabase')
DROP DATABASE [MyDatabase]
GO
Я часто получаю эту ошибку
Msg 3702, Level 16, State 4, Line 3
Cannot drop database "MyDatabase" because it is currently in use.
Если щелкнуть правой кнопкой мыши базу данных на панели обозревателя объектов и выбрать задачу «Удалить» из контекстного меню, появится флажок для «закрытия существующих подключений».
Есть ли способ указать эту опцию в моем скрипте?
sql
sql-server
Ник
источник
источник
Зайдите в Management Studio и сделайте все, что вы описываете, только вместо того, чтобы нажимать OK, нажмите Script. Он покажет код, который он будет запускать, который вы затем сможете включить в свои скрипты.
В этом случае вы хотите:
источник
Согласно документации ALTER DATABASE SET , все еще существует вероятность того, что после установки базы данных в режим SINGLE_USER вы не сможете получить доступ к этой базе данных:
Итак, полный скрипт для удаления базы данных с существующими соединениями может выглядеть так:
источник
Я знаю, что уже слишком поздно, но, может быть, кому-то это поможет. при использовании этого взять вашу базу данных в автономном режиме
источник
Я попробовал то, что сказал hgmnz на SQL Server 2012.
Управление создано для меня:
источник
ROLLBACK IMMEDIATE
заявление будет включено. Этоsp_delete_database_backuphistory
происходит из-за проверки «Удаление резервной копии и восстановление истории информации для баз данных».ALTER DATABASE SET SINGLE_USER ...
если нет текущих подключений для закрытия.попробуйте этот код C #, чтобы удалить вашу базу данных
public static void DropDatabase (строка dataBase) {
источник