मुझे यकीन है कि मेरे डेटाबेस (एसक्यूएल सर्वर 2008) अपरिवर्तनीय, लेकिन अभी भी सुलभ बना रहता है कुछ रखरखाव कार्यों, कैसे मैं प्रोग्राम के रूप में यह सी # में परिवर्तन के लिए बंद कर सकते हैं (बैकअप, अन्य डीबी सर्वर आदि के लिए संक्रमण) के दौरान पढ़ता के लिए बनाने के लिए करना चाहते हैं?परिवर्तनों के लिए मैं SQL सर्वर डेटाबेस को कैसे लॉक कर सकता हूं?
6
A
उत्तर
12
आप केवल-पठन मोड में एक डेटाबेस डाल करने के लिए एक ALTER DATABASE <mydb> SET READ_ONLY
निष्पादित कर सकते हैं।
आप विफल करता है, तो इसे तुरंत निष्पादित नहीं किया जा सकता है आदेश चाहते हैं तो आप इसे इस तरह निर्दिष्ट करें:
ALTER DATABASE <mydb>
SET READ_ONLY
WITH NO_WAIT
आप यह सब खुले कनेक्शनों रोलबैक आप इस तरह आदेश निर्दिष्ट बनाना चाहते हैं:
ALTER DATABASE <mydb>
SET READ_ONLY
WITH ROLLBACK IMMEDIATE
ये विकल्प अच्छी तरह से SQL Server Books online
में दर्ज कर रहे हैं धन्यवाद, इस बार के कुछ काम करने के लिए लगता है, लेकिन कई बार के आधे मैं (क्वेरी निष्पादित एसक्यूएल सर्वर मन में जीमेंट स्टूडियो) निष्पादन लटकता है और वापस नहीं आता है ... – user1088045
आप 'NO_WAIT' के साथ निर्दिष्ट कर सकते हैं, इसलिए यह तुरंत विफल हो जाता है जब यह खुले लेनदेन आदि के कारण आदेश नहीं कर सकता है या आप इसे बनाने के लिए 'रोलबैक तत्काल 'निर्दिष्ट कर सकते हैं सभी खुले लेनदेन रोलबैक। –