मैं कहूंगा कि जीयूआई में कभी भी "टेक ऑफलाइन" चीज का उपयोग न करें जब तक कि आप इस तथ्य के लिए नहीं जानते कि डेटाबेस उपयोग में नहीं है। किसी भी चीज से। कुछ लेगवर्क किए बिना यह जानना कठिन है, तो क्यों न इस स्क्रिप्ट को कहीं बचा लिया जाए और हमेशा इसका उपयोग किया जाए?
USE [master];
GO
ALTER DATABASE $dbname$ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE $dbname$ SET OFFLINE;
और फिर निश्चित रूप से पारस्परिक:
ALTER DATABASE $dbname$ SET ONLINE;
GO
ALTER DATABASE $dbname$ SET MULTI_USER;
कारण यह है कि आपको इसे SINGLE_USERपहले सेट करने की आवश्यकता है किसी भी मौजूदा उपयोगकर्ताओं को बाहर निकालने के लिए (डिटैच डायलॉग पर ऐसा करने का एक विकल्प है, लेकिन ऑफ़लाइन संवाद नहीं है), क्योंकि SQL सर्वर को डेटाबेस तक पहुंचने के लिए अनन्य एक्सेस की आवश्यकता होती है यह ऑफ़लाइन है। अब, आप वैसे भी कुछ अतिरिक्त कार्य करना चाह सकते हैं, यह देखने के लिए कि वर्तमान में डेटाबेस का उपयोग कौन कर रहा है, जैसे कि आप बड़े बैकअप ऑपरेशन या ईटीएल नौकरी के बीच में ऐसा करते हैं या आपके पास क्या है, जो समस्याग्रस्त हो सकता है।
संपादित करें : मैं इस बारे में कनेक्ट पर एक सुझाव दायर की है (देखें कनेक्ट # 2,687,832 ) और यह भी करने के लिए इसे पोस्ट किया है Trello (के तहत "वस्तु एक्सप्लोरर" दायर)।
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;पहले जारी करके ... अन्यथा यह बस बैठता है और इंतजार करता है, और एक व्यस्त डेटाबेस के लिए, यह हमेशा के लिए हो सकता है।