SSMS पंजीकृत कर्मचारियों को ReadOnly एप्लीकेशन इंटेंट के साथ


10

हम हमेशाऑनऑन के साथ SQL सर्वर 2014 POC परीक्षण पर काम कर रहे हैं और एक उपयोगकर्ता ने स्थानीय सर्वर समूह में पंजीकृत सर्वरों का उपयोग करके ReadOnly Intent के साथ SSMS के कॉन्फ़िगरेशन को बचाने के बारे में पूछा । इस प्रकार उन्हें हर बार रीडऑनली प्रतिकृति तक पहुँचने के लिए उपनाम नाम में टाइप करने की आवश्यकता नहीं होती है ।

दुर्भाग्य से नियमित ऑब्जेक्ट एक्सप्लोरर के विपरीत ApplicationIntent विकल्प जोड़ने के लिए पंजीकृत सर्वर के भीतर कोई विकल्प नहीं है।

मैं RegSrvr.xml में कनेक्शन स्ट्रिंग को बदलने के बारे में Microsoft से इस लेख में आया था।

https://connect.microsoft.com/SQLServer/feedback/details/786323/ssms-sql-server-management-studio-2012-missing-connection-properties-for-availability-groups

मैंने उनके सुझाव की कोशिश की और पंजीकृत सर्वरों में स्थानीय सर्वर के माध्यम से कनेक्ट होने पर यह सही प्रतिकृति नोड से कनेक्ट नहीं हुआ।

ReadOnly विकल्प है जब कनेक्ट विंडो में विकल्प> अतिरिक्त कनेक्शन पैरामीटर का उपयोग वस्तु अन्वेषक से ठीक काम करता है। लेकिन यह कनेक्शन में किए गए परिवर्तनों को नहीं बचाता है।

क्या किसी को SSMS के साथ ReadOnly इरादे की संपत्ति के साथ कॉन्फ़िगरेशन को बचाने के किसी भी वैकल्पिक समाधान के बारे में पता है ? आपकी सहायता के लिये पहले से ही धन्यवाद।

जवाबों:


3

SQL प्रबंधन स्टूडियो (2016 से पहले के संस्करण)

दुर्भाग्य से, वहाँ कुछ चेतावनी है जो SQL प्रबंधन स्टूडियो में एप्लिकेशन इंटेंट का उपयोग करते हुए कुछ दर्दनाक हैं:

मैन्युअल रूप से ReadOnly आशय के साथ कनेक्ट करने के लिए , ऑब्जेक्ट एक्सप्लोरर से कनेक्ट सर्वर संवाद लाने के बाद , उपयोगकर्ताओं को याद रखना चाहिए:

  1. विकल्प >> पर क्लिक करें ।
  2. पर जाएं अतिरिक्त कनेक्शन पैरामीटर टैब।
  3. ApplicationIntent = ReadOnly के रूप में अतिरिक्त पैरामीटर दर्ज करें;
  4. (नोट: उपयोगकर्ताओं को अतिरिक्त कनेक्शन पैरामीटर दर्ज करने के बाद विकल्प << बटन पर क्लिक नहीं करना चाहिए या पैरामीटर खो जाएंगे।)
  5. कनेक्ट पर क्लिक करें
  6. ऑब्जेक्ट एक्सप्लोरर दृश्य में वांछित डेटाबेस पर राइट-क्लिक करके और नीचे # 3 कैविटी में चलने से बचने के लिए नई क्वेरी का चयन करके हमेशा क्वेरी विंडो लॉन्च करें।

लागू होने वाले केवेट इस प्रकार हैं:

  1. यद्यपि आप केवल पढ़ने के इरादे से जुड़ने के लिए SQL प्रबंधन स्टूडियो प्राप्त कर सकते हैं, यह पंजीकृत कनेक्शन सर्वर में एक कनेक्शन जोड़ने पर अतिरिक्त कनेक्शन पैरामीटर को संग्रहीत नहीं करता है।
  2. एप्लिकेशन इंटेंट को जोड़ने के लिए RegSrvr.xml फ़ाइल में स्थानीय रूप से पंजीकृत सर्वर को संपादित करते समय व्यवहार बेहद असंगत है और जीयूआई द्वारा इस वर्कअराउंड को अविश्वसनीय बनाने के माध्यम से किए गए किसी भी समय ओवरराइट किया जाएगा।
  3. हमेशा क्वेरी विंडो खोलने से पहले डेटाबेस को चुना जाना चाहिए; अन्यथा, कनेक्शन प्राथमिक सर्वर पर रूट हो जाता है। यदि आप क्वेरी विंडो को पहले ही गैर-ऑलवेज डेटाबेस में खोलने के बाद क्वेरी विंडो का उपयोग करके डेटाबेस का चयन करने का प्रयास करते हैं, तो आपको एक त्रुटि संवाद मिलेगा। यदि आप क्वेरी विंडो के पहले से ही गैर-हमेशा ऑन डेटाबेस के लिए खोले जाने के बाद डेटाबेस का उपयोग हमेशा डेटाबेस पर एक यूएसई स्टेटमेंट के साथ करने का प्रयास करते हैं, तो परिणाम ऐसे दिखते हैं जब आप SQL क्वेरी को निष्पादित करने का प्रयास करते हैं:
      Msg 979, Level 14, State 1, Line 1
      The target database ('AlwaysOnDatabase') is in an availability group 
      and currently does not allow read only connections. For more 
      information about application intent, see SQL Server Books Online.

SQL प्रबंधन स्टूडियो (संस्करण 2016 या बाद के संस्करण)

SQL सर्वर प्रबंधन स्टूडियो 2016 या उच्चतर Read Only Application Intent (पूर्व संस्करणों के समान 6 चरणों का उपयोग करके) के साथ जुड़ सकता है और यह अतिरिक्त कनेक्शन पैरामीटर को संग्रहीत करता है। अभी भी कुछ चेतावनी हैं:

  1. ऑब्जेक्ट एक्सप्लोरर दृश्य ऑल्वेज़ऑन डेटाबेस में किसी भी टेबल या अन्य ऑब्जेक्ट को नहीं करेगा। एक पहुंच अस्वीकृत संदेश के परिणामस्वरूप उन्हें विस्तारित करने का प्रयास किया जा रहा है।
  2. आपके पास एक ही समय में खुले एक श्रोता के लिए केवल पढ़ने के लिए और एक गैर-पढ़ें केवल कनेक्शन नहीं हो सकता है।
  3. डेटाबेस में ऑब्जेक्ट नामों के लिए Intellisense काम नहीं करता है। (ताज्जुब की बात है, ऑब्जेक्ट क्वेरी डिज़ाइनर में ठीक-ठीक मिलते हैं जिसे आप राइट-क्लिक मेनू से डिज़ाइन क्वेरी में एडिटर का उपयोग करके लॉन्च कर सकते हैं।)
  4. पूर्व संस्करणों के कैविट 3 से कैविट 3 अभी भी लागू होता है।

तृतीय-पक्ष उत्पाद

LinqPad जब आप एक कनेक्शन को बचाते हैं तो एप्लिकेशन इंटेंट और डेटाबेस सहित पूरे कनेक्शन स्ट्रिंग को स्टोर करते हैं और इसलिए डेटाबेस पर हमेशा के खिलाफ केवल प्रश्न पढ़ने के लिए एक व्यवहार्य विकल्प हो सकता है।


0

आपको पहेली का एक महत्वपूर्ण हिस्सा याद आ रहा है या कम से कम मैंने इसे आपके प्रश्न में कहीं नहीं देखा:

ApplicationIntent=readonlyसमीकरण का आधा हिस्सा है। आपको पैरामीटर भी पास करना होगा MultiSubnetFailover=True

उदाहरण के लिए, अतिरिक्त कनेक्शन पैरामीटर टैब में, आप निम्नलिखित दर्ज करना चाहते हैं:

MultiSubnetFailover=True;ApplicationIntent=readonly;

धन्यवाद टोनी, लेकिन यह मुद्दा मैं नहीं कर रहा हूँ।
DBAuser

0

क्या आपने PowerShell स्क्रिप्ट की कोशिश की है, लेकिन एप्लिकेशन के इरादे के लिए एक अन्य वर्तनी (एक स्थान के साथ) का उपयोग करें? या क्या मुझे कनेक्शन के तरीके मिल गए हैं?

Server=$regsrv ; integrated security=true;Initial Catalog=dbname;
Application Intent=ReadOnly"); 

एप्लिकेशन इंटेंट-ओनली एप्लिकेशन का उपयोग करके SQL सर्वर से कनेक्ट करें


0

क्या यह संभव है कि आप एक कॉन्फ़िगरेशन फ़ाइल बनाएँ और फिर आप SSMS में आवश्यक पंजीकृत सर्वरों का निर्माण करें? जैसा कि मेरे MSSQLTips लेख में बताया गया है:

SQL सर्वर प्रबंधन स्टूडियो (SSMS) में सर्वरों का पंजीकरण और रखरखाव


हाय jyao, आपके उत्तर के लिए धन्यवाद। आपने उस लेख में एक इच्छुक शक्तियां स्क्रिप्ट पोस्ट की हैं, लेकिन दुर्भाग्य से ApplicationIntent संपत्ति के साथ काम नहीं करता है। मैंने निम्नलिखित का उपयोग करने के लिए PS बदल दिया: नया-आइटम -Name $ (encode-sqlname $ g.value) -path "sqlserver: \ SQLRegademy \ $ ($ पसंद) \ $ ($ g.parparfolder)" -ItemType $ g .type -Value ("सर्वर = $ regsrv; एकीकृत सुरक्षा = सत्य; प्रारंभिक कैटलॉग = dbname; ApplicationIntent = ReadOnly"); कोई भाग्य नहीं! यदि यह काम करेगा, तो मुझे विकल्प के रूप में इसका उपयोग करने में अधिक खुशी होगी। एक बार फिर धन्यवाद।
DBAuser

0

यह SQL 2016 SSMS में पंजीकृत सर्वर के साथ उपयोग करते समय तय किया गया है। मैं स्थानीय सर्वर समूह के हिस्से के रूप में रीडऑनली इंटेंट कनेक्शन को पंजीकृत करने और भविष्य में उपयोग के लिए सहेजे गए कनेक्शन को खोलने में सक्षम था। इस के साथ मदद के लिए धन्यवाद।


0

मैं टिप्पणी नहीं कर सकता लेकिन DBAUser के उत्तर में जोड़ रहा हूं।

मैं पंजीकृत सर्वर क्षेत्र के भीतर कनेक्शन स्थापित करते समय GUI में एप्लिकेशन इंटेंट को जोड़ने का विकल्प नहीं देख सकता था।

मुझे ऑब्जेक्ट एक्सप्लोरर (उपयोग करने Data Source=<Listener>;Initial Catalog=<Database>;ApplicationIntent=ReadOnly) का उपयोग करके कनेक्ट करना था, फिर कनेक्ट होने के बाद सर्वर को पंजीकृत करें।

या Initial Catalog=<Database>;ApplicationIntent=ReadOnly.regsrvr फ़ाइल में कनेक्शन स्ट्रिंग में जोड़ें ।


आपको ऑब्जेक्ट एक्सप्लोरर में रीडऑनली सर्वर को पंजीकृत करने की आवश्यकता होगी, इसे पंजीकृत सर्वरों में स्थानीय सर्वर समूहों के भाग के रूप में देखें। ऑब्जेक्ट एक्स्प्लोरर में, एक बार जब आप सर्वर पर एप्लिकेशन के साथ एक आसानी से कनेक्शन बना लेते हैं, तो सर्वर पर राइट क्लिक करें और रजिस्टर पर क्लिक करें। फिर आप जिस पंजीकृत सर्वर का नाम चाहेंगे, उसे बदल दें। यह पंजीकृत सर्वरों में स्थानीय सर्वर के हिस्से के रूप में सहेजा जाएगा। उम्मीद है की यह मदद करेगा!
DBAuser
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.