2010-05-28 14 views
21

मुझे यह जानने की आवश्यकता है कि एक Microsoft SQL सर्वर से पूछताछ कैसे करें, यह देखने के लिए कि कोई दिया गया डेटाबेस Read-Only पर सेट किया गया है या नहीं।टी-एसक्यूएल का उपयोग कर SQL सर्वर डेटाबेस की केवल-पढ़ने की स्थिति का पता लगाने के लिए कैसे?

क्या यह संभव है, टी-एसक्यूएल का उपयोग कर?

उत्तर

31

जानकारी sys.databases में संग्रहीत है।

SELECT name, is_read_only 
FROM sys.databases 
WHERE name = 'MyDBNAme' 
GO 

--returns 1 in is_read_only when database is set to read-only mode. 
+0

बिल्कुल सही:

इसलिए, यह कथन का उपयोग डेटाबेस के केवल-पठन मोड जाँच करने के लिए सलाह दी जाती है! धन्यवाद!!! – Giuseppe

6

इस संपत्ति को प्रदर्शित या सेट करने के लिए यहां command है।

EXEC sp_dboption "AdventureWorks", "read only" 

नमूना उत्पादन

OptionName CurrentSetting  
read only OFF 
4

मैं अगर मेरे Azure एसक्यूएल डीबी प्राथमिक एक या केवल पढ़ने के लिए प्रतिकृति है की जाँच करने के p.campbell के जवाब का उपयोग करने के कोशिश कर रहा था - यह काम नहीं किया । प्राथमिक डीबी और प्रतिकृति दोनों को is_read_only फ़ील्ड पर 0 था।

यहाँ क्या मेरे लिए काम किया है:

SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability'); 

ऊपर का चयन बयान रिटर्न स्ट्रिंग 'READ_ONLY' या 'READ_WRITE'।

11

स्पष्ट सेट एक डीबी के केवल पढ़ने के लिए संपत्ति की जाँच के केवल सही जानकारी दे देंगे केवल-पढ़ने के लिए मोड यदि डेटाबेस से किया गया है के लिए पता कर रहा है sys.databases

निष्क्रिय सर्वरों (जैसे हमेशा ओपन टेक्नोलॉजी सेकेंडरी सर्वर) में डेटाबेस के लिए, डेटाबेस को लिखे जा सकते हैं, भले ही sys.databases में उनके रीड-ओनली मोड को अभी भी False(0) के रूप में सेट किया जाएगा।

SELECT DATABASEPROPERTYEX('MyDBNAme', 'Updateability'); 
+0

यह मेरे लिए एक Azure डेटाबेस पर प्राथमिक बनाम माध्यमिक जांचने के लिए भी काम करता है। ध्यान दें, लौटाए गए मान READ_ONLY और READ_WRITE हैं। इसके अलावा, Azure में, यदि आप किसी डेटाबेस से क्वेरी करते हैं जो पहले पैरामीटर में पास किए गए डेटाबेस नाम से मेल नहीं खाता है, तो परिणाम न्यूल होगा। –

+0

तो यह Azure पर अच्छी तरह से काम करता है: DATABASEPROPERTYEX चुनें (DB_NAME(), 'अद्यतनता'); –