2012-01-27 12 views
8

estoy usando el siguiente comando en mi archivo de MSBuild para dejar caer una base de datos degota DB utilizando MSBuild incluso si está en uso

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

Pero a veces me sale el error

No se puede quitar la base de datos, ya que es actualmente en uso.

¿Qué comando debo usar para que el DB se elimine incluso si está en uso?

+3

Cierre todas las conexiones a la base de datos y luego pruebe el comando DROP DATABASE. –

+0

¿cómo cierro todas las conexiones a la base de datos usando sqlcmd? –

Respuesta

-1

No puede colocar una base de datos que esté en uso. Check link for ref

+0

Entonces, ¿hay alguna forma de usar sqlcmd que pueda cerrar todas las conexiones existentes? –

+0

Voto a favor, cuidado de explicar? – Arran

19

Puede configurar su base de datos en SINGLE_USER para eliminar todas las conexiones existentes.

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

Esto se prefiere a recorrer distintos de las conexiones y los cayendo uno por uno, ya que algunas aplicaciones se vuelva a conectar inmediatamente.

+1

También evita que los nuevos usuarios se conecten ;-) – EBarr

+0

@Michael Gracias por publicar la respuesta muy corta en lugar de enlazarla. – jordanbtucker

0

Utilice algo como esto:

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

Prueba esto:

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

Se podría, alternativamente, reinicie el servicio de SQL y luego realizar el descenso por ejemplo, en un 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]" 
Cuestiones relacionadas