2012-01-27 20 views
8

में मैं अपने MSBuild फ़ाइल में निम्न आदेश का उपयोग कर रहा एक डेटाबेसड्रॉप डीबी MSBuild का उपयोग कर भले ही उपयोग

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

ड्रॉप करने लेकिन कभी कभी मैं त्रुटि

डेटाबेस ड्रॉप नहीं कर सकता क्योंकि है इसे पाने के अभी इस्तेमाल हो रहा है।

मुझे किस कमांड का उपयोग करना चाहिए ताकि डीबी को उपयोग में आने पर भी गिरा दिया जा सके?

+3

डीबी के सभी कनेक्शन बंद करें और फिर DROP डेटाबेस आदेश का प्रयास करें। –

+0

मैं sqlcmd का उपयोग कर डीबी के सभी कनेक्शन कैसे बंद करूं? –

उत्तर

3

अपने डेटाबेस से सभी कनेक्शन को मारने के लिए। Kill All Active Connections To A Database

अब उपर्युक्त प्रक्रिया के बाद अपना DROP डेटाबेस आदेश जारी करें।

-1

आप उपयोग में आने वाले डेटाबेस को नहीं छोड़ सकते हैं। Check link for ref

+0

तो, क्या sqlcmd का उपयोग करने का कोई तरीका है कि मैं सभी मौजूदा कनेक्शन बंद कर सकता हूं? –

+0

डाउनवोट, समझाने की देखभाल? – Arran

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

यह नए उपयोगकर्ताओं को जोड़ने से भी रोकता है ;-) – EBarr

+0

@ माइकल इसे जोड़ने के बजाय बहुत कम उत्तर पोस्ट करने के लिए धन्यवाद। – jordanbtucker

0

कुछ इस तरह का उपयोग करें:

sqlcmd -S servername\instance -Q"use master;DROP DATABASE yourdatabase" 
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'" 
0

आप वैकल्पिक रूप से एसक्यूएल सेवा पुनः आरंभ हो सके और फिर ड्रॉप जैसे प्रदर्शन 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]"