即使在使用中也使用MSBuild删除数据库

时间:2012-01-27 16:49:45

标签: sql-server msbuild sqlcmd

我在MSBuild文件中使用以下命令删除数据库

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

但有时我会收到错误

  

无法删除数据库,因为它当前正在使用中。

我应该使用什么命令,以便即使数据库被使用也会被删除?

6 个答案:

答案 0 :(得分:19)

您可以将数据库设置为SINGLE_USER以删除所有现有连接。

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

首选循环遍历每个连接并逐个删除它们,因为某些应用程序会立即重新连接。

答案 1 :(得分:3)

终止与数据库的所有连接。见Kill All Active Connections To A Database

现在在上述过程之后发出DROP DATABASE命令。

答案 2 :(得分:0)

请使用以下内容:

sqlcmd -S servername\instance -Q"use master;DROP DATABASE yourdatabase"

答案 3 :(得分:0)

试试这个:

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'" 

答案 4 :(得分:0)

您也可以重新启动sql服务,然后执行drop,例如在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]"

答案 5 :(得分:-1)

您无法删除正在使用的数据库。 Check link for ref