Удаление БД с использованием MSBuild, даже если он используется - PullRequest
8 голосов
/ 27 января 2012

Я использую следующую команду в своем файле MSBuild для удаления базы данных

sqlcmd -E -S <ServerName> -Q "DROP DATABASE <DBName>"

Но иногда я получаю сообщение об ошибке

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

Какую команду использовать, чтобы БД была сброшена, даже если она используется?

Ответы [ 6 ]

19 голосов
/ 27 января 2012

Вы можете установить базу данных на SINGLE_USER, чтобы отбросить все существующие соединения.

sqlcmd -E -S <ServerName> -Q "ALTER DATABASE <DBName> SET SINGLE_USER WITH ROLLBACK IMMEDIATE"
sqlcmd -E -S <ServerName> -Q "DROP DATABASE <DBName>"

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

3 голосов
/ 27 января 2012

Чтобы убить все соединения с вашей базой данных. См. Убить все активные подключения к базе данных

Теперь выполните команду DROP DATABASE после описанной выше процедуры.

0 голосов
/ 17 ноября 2016

В качестве альтернативы вы можете перезапустить службу sql и затем выполнить удаление, например, в myfile.bat

@echo off
REM Requires administrative rights to restart service
REM open powershell and execute command in administrative mode
powershell -Command "Start-Process 'cmd' -Verb RunAs -ArgumentList '/c net stop MSSQLSERVER && net start MSSQLSERVER && exit'"      
echo Please wait ~10 seconds for sql service to restart. 
Timeout /t 10 /nobreak
echo Dropping database. 
sqlcmd -S localhost -Q "drop database [database Name]"
0 голосов
/ 17 мая 2013

Попробуйте это:

sqlcmd -S .\MAPS -Q "RESTORE DATABASE Awards FROM DISK = 'C:\Awards_Project
\Awards_FULL.bak' WITH REPLACE, MOVE 'Awards' to 'C:\Awards_Project\Awards.mdf',
MOVE 'Awards_log' to 'C:\Awards_Project\Awards.ldf'" 
0 голосов
/ 15 апреля 2013

Пожалуйста, используйте что-то вроде этого:

sqlcmd -S servername\instance -Q"use master;DROP DATABASE yourdatabase"
0 голосов
/ 27 января 2012

Вы не можете удалить базу данных, которая используется. Проверить ссылку на ссылку

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