2011-12-08 12 views
6

मुझे यकीन है कि मेरे डेटाबेस (एसक्यूएल सर्वर 2008) अपरिवर्तनीय, लेकिन अभी भी सुलभ बना रहता है कुछ रखरखाव कार्यों, कैसे मैं प्रोग्राम के रूप में यह सी # में परिवर्तन के लिए बंद कर सकते हैं (बैकअप, अन्य डीबी सर्वर आदि के लिए संक्रमण) के दौरान पढ़ता के लिए बनाने के लिए करना चाहते हैं?परिवर्तनों के लिए मैं SQL सर्वर डेटाबेस को कैसे लॉक कर सकता हूं?

उत्तर

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

+0

में दर्ज कर रहे हैं धन्यवाद, इस बार के कुछ काम करने के लिए लगता है, लेकिन कई बार के आधे मैं (क्वेरी निष्पादित एसक्यूएल सर्वर मन में जीमेंट स्टूडियो) निष्पादन लटकता है और वापस नहीं आता है ... – user1088045

+0

आप 'NO_WAIT' के साथ निर्दिष्ट कर सकते हैं, इसलिए यह तुरंत विफल हो जाता है जब यह खुले लेनदेन आदि के कारण आदेश नहीं कर सकता है या आप इसे बनाने के लिए 'रोलबैक तत्काल 'निर्दिष्ट कर सकते हैं सभी खुले लेनदेन रोलबैक। –

संबंधित मुद्दे