Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर लेनदेन संबंधी प्रतिकृति आंतरिक

SQL सर्वर ट्रांजेक्शनल प्रतिकृति सबसे आम प्रतिकृति तकनीकों में से एक है जिसका उपयोग कई गंतव्यों में डेटा साझा करने, कॉपी करने या वितरित करने के लिए किया जाता है। इस लेख में, हम प्रतिकृति, विभिन्न प्रतिकृति प्रकारों पर चर्चा करेंगे, और लेनदेन संबंधी प्रतिकृति कार्य पर विशेष ध्यान देंगे।

SQL ट्रांजेक्शनल प्रतिकृति क्या है?

डेटा संगतता बनाए रखते हुए डेटा को एक डेटाबेस से दूसरे डेटाबेस में कॉपी या वितरित करने के लिए प्रतिकृति SQL सर्वर तकनीक है।

प्रतिकृति का उपयोग डेटा को एक डेटाबेस से दूसरे डेटाबेस में स्थानांतरित करने के लिए किया जा सकता है

<उल प्रकार ="ए">
  • उसी इंस्टेंस पर या उसी सर्वर में किसी अन्य इंस्टेंस पर;
  • या एक ही स्थान या एकाधिक स्थानों में सर्वर पर।
  • सबसे पहले, हमें प्रतिकृति वास्तुकला के माध्यम से जाना चाहिए और प्रतिकृति शब्दावली को समझना चाहिए।

    SQL सर्वर प्रतिकृति वास्तुकला और शब्दावली

    • प्रकाशक स्रोत डेटाबेस उदाहरण है जो डेटा परिवर्तनों को प्रकाशित करता है जिसे किसी अन्य डेटाबेस में वितरित किया जा सकता है। एकल प्रकाशक . का डेटा एक एकल सदस्य . को भेजा जा सकता है या अनेक सदस्य
    • सदस्य गंतव्य डेटाबेस इंस्टेंस है जहां हम प्रकाशक डेटाबेस से कैप्चर किए गए डेटा परिवर्तनों को वितरित करते हैं। सब्सक्राइबर या तो एक पब्लिशर इंस्टेंस हो सकता है या एक अन्य इंस्टेंस पब्लिशर सर्वर/उसी स्थान/दूर के स्थान पर किसी अन्य सर्वर में हो सकता है। सब्सक्राइबर डेटाबेस इंस्टेंस में डेटा परिवर्तन वितरित किए जाने से पहले, ये डेटा वितरक में संग्रहीत किए जाते हैं ।
    • वितरक एक डेटाबेस है जो प्रकाशक डेटाबेस से कैप्चर किए गए परिवर्तन लॉग को संग्रहीत करता है। जब एक सर्वर को वितरक के रूप में सक्षम किया जाता है, तो यह वितरण डेटाबेस नामक एक सिस्टम डेटाबेस तैयार करेगा। ।

    वितरण डेटाबेस के स्थान के अनुसार, उन्हें स्थानीय या दूरस्थ वितरकों के रूप में वर्गीकृत किया जा सकता है।

    - स्थानीय वितरक प्रकाशक डेटाबेस उदाहरण पर रहने वाला एक वितरण डेटाबेस है।
    - दूरस्थ वितरक एक वितरण डेटाबेस है जो या तो सब्सक्राइबर डेटाबेस इंस्टेंस में या प्रकाशक डेटाबेस इंस्टेंस के अलावा किसी अन्य SQL सर्वर इंस्टेंस में रहता है।

    डिस्ट्रीब्यूशन डेटाबेस को पब्लिशर इंस्टेंस (एक और इंस्टेंस) पर कहां रखा जाए, यह निर्णायक कारक है। यह डेटा वितरण भार को संभालने के लिए उपलब्ध सर्वर संसाधनों पर निर्भर करता है।

    वितरण डेटाबेस से सब्सक्राइबर इंस्टेंस में डेटा कैसे भेजा जाएगा, इसके अनुसार इसे पुश में वर्गीकृत किया जा सकता है या सदस्यता प्राप्त करें

    - सदस्यता पुश करें इसका मतलब है कि वितरण डेटाबेस डेटा को सब्सक्राइबर डेटाबेस इंस्टेंस पर धकेलने की ज़िम्मेदारी लेता है।
    - सदस्यता खींचें इसका मतलब है कि सब्सक्राइबर डेटाबेस इंस्टेंस वितरण डेटाबेस से उपलब्ध डेटा को खींचने और इसे सब्सक्राइबर डेटाबेस पर लागू करने की जिम्मेदारी लेता है।

    • लेख प्रतिकृति की मौलिक इकाई हैं। यह इस डेटाबेस ऑब्जेक्ट या आलेख पर किसी भी डेटा परिवर्तन को इंगित करता है जिसे प्रकाशक से सब्सक्राइबर में दोहराया जाएगा। आलेख एक तालिका, दृश्य, अनुक्रमित दृश्य, संग्रहीत कार्यविधि या उपयोगकर्ता परिभाषित कार्य हो सकता है।
    • प्रकाशन प्रकाशक में डेटाबेस से एक या अधिक लेखों का संग्रह है।
    • सदस्यता परिभाषित करता है कि प्रकाशन क्या प्राप्त होगा। साथ ही, यह निर्धारित करता है कि किस प्रकाशन से और किस शेड्यूल पर डेटा दोहराया गया है। सदस्यता या तो पुश या पुल (प्रकाशन से सदस्यता तक) हो सकती है।
    • प्रतिकृति एजेंट स्टैंडअलोन प्रोग्राम हैं जो परिवर्तनों को ट्रैक करने और प्रकाशक से वितरक और सब्सक्राइबर को डेटा वितरित करने के लिए जिम्मेदार हैं। सभी प्रतिकृति एजेंट SQL सर्वर एजेंट के अंतर्गत कार्य के रूप में निष्पादित होते हैं। इस प्रकार, इसे SQL सर्वर एजेंट जॉब्स या प्रतिकृति मॉनिटर के तहत SSMS के माध्यम से प्रशासित किया जा सकता है। निम्नलिखित प्रकार के प्रतिकृति एजेंट उपलब्ध हैं:
    • स्नैपशॉट एजेंट - लगभग सभी प्रकार की प्रतिकृति द्वारा उपयोग किया जाता है। स्नैपशॉट एजेंट वितरण डेटाबेस रखने वाले सर्वर से चलता है। यह एक प्रकाशक पर प्रकाशन में शामिल सभी लेखों की स्कीमा और प्रारंभिक डेटा तैयार करता है। साथ ही, यह स्नैपशॉट फ़ोल्डर में स्नैपशॉट फ़ाइलें बनाता है और वितरण डेटाबेस में सिंक्रनाइज़ेशन विवरण रिकॉर्ड करता है।
    • लॉग रीडर एजेंट - लेन-देन प्रतिकृति द्वारा उपयोग किया जाता है। लक्ष्य प्रकाशक डेटाबेस लेनदेन लॉग से प्रतिकृति के लिए सक्षम लेखों के डेटा परिवर्तनों को पढ़ना और वितरण डेटाबेस में संग्रहीत करना है। लॉग रीडर एजेंट वितरक सर्वर से चलता है।
    • वितरण एजेंट - लेन-देन और स्नैपशॉट प्रतिकृति द्वारा उपयोग किया जाता है। यह वितरण डेटाबेस से सब्सक्राइबर डेटाबेस में प्रारंभिक स्नैपशॉट फ़ाइलों और वृद्धिशील या उपलब्ध लंबित लेनदेन को लागू करता है। डिस्ट्रीब्यूशन एजेंट पुश सब्सक्रिप्शन के लिए डिस्ट्रीब्यूटर सर्वर और पुल सब्सक्रिप्शन के लिए सब्सक्राइबर सर्वर से चलता है।
    • एजेंट मर्ज करें - केवल मर्ज प्रतिकृति द्वारा उपयोग किया जाता है। यह प्रारंभिक स्नैपशॉट फ़ाइलों को लागू करता है और प्रकाशक या सब्सक्राइबर में अंतर या वृद्धिशील परिवर्तनों का समाधान करता है। मर्ज एजेंट पुश प्रतिकृति के लिए वितरक सर्वर पर और पुल सदस्यता के लिए सब्सक्राइबर सर्वर से चलता है।
    • क्यू रीडर एजेंट - कतार रीडर एजेंट का उपयोग कतारबद्ध अद्यतन विकल्प के साथ लेनदेन संबंधी प्रतिकृति द्वारा किया जाता है। यह सब्स्क्राइबर से प्रकाशक में परिवर्तन ले जाता है। कतार रीडर एजेंट वितरक सर्वर से चलता है।
    • प्रतिकृति अनुरक्षण कार्य - जैसा कि पहले बताया गया है, सभी प्रतिकृति एजेंट प्रतिकृति को कॉन्फ़िगर करते समय स्थापित स्टैंडअलोन प्रोग्राम हैं। वे SQL सर्वर एजेंट जॉब्स के तहत जॉब के रूप में चलते हैं। ध्यान देने योग्य कुछ महत्वपूर्ण कार्य हैं डिस्ट्रीब्यूशन क्लीन अप:डिस्ट्रीब्यूशन, एजेंट हिस्ट्री क्लीन अप:डिस्ट्रीब्यूशन, और एक्सपायर्ड सब्सक्रिप्शन क्लीन अप।

    प्रतिकृति के प्रकार SQL सर्वर में

    अब जब हम शब्दावली जानते हैं, तो आइए प्रतिकृति के प्रकारों पर ध्यान दें।

    1. लेन-देन संबंधी प्रतिकृति . जैसा कि नाम से पता चलता है, प्रकाशक पर लेन-देन के दायरे में प्रत्येक लेनदेन या डेटा परिवर्तन नेटवर्क बैंडविड्थ और सर्वर संसाधनों के आधार पर मामूली देरी के साथ वास्तविक समय में सब्सक्राइबर को भेजा जाएगा। प्रकाशक डेटाबेस के लेन-देन संबंधी लॉग से डेटा परिवर्तनों को पढ़ने के लिए लेन-देन संबंधी प्रतिकृति लॉग रीडर एजेंट का उपयोग करती है। यह सब्सक्राइबर में परिवर्तन लागू करने के लिए वितरण एजेंट का भी उपयोग करता है। कभी-कभी यह सभी प्रतिरूपित लेखों का प्रारंभिक स्नैपशॉट डेटा लेने के लिए स्नैपशॉट एजेंट का उपयोग कर सकता है। लेन-देन प्रतिकृति प्रकाशन निम्न श्रेणियों के अंतर्गत आ सकता है:
      • मानक लेन-देन प्रतिकृति - लेन-देन प्रतिकृति परिप्रेक्ष्य से सब्सक्राइबर केवल-पढ़ने के लिए डेटाबेस है। सब्सक्राइबर डेटाबेस पर किसी के द्वारा किए गए किसी भी परिवर्तन को ट्रैक नहीं किया जाएगा और प्रकाशक डेटाबेस में अपडेट नहीं किया जाएगा। मानक लेनदेन संबंधी प्रतिकृति को अक्सर लेन-देन संबंधी प्रतिकृति के रूप में संदर्भित किया जाता है।
      • अद्यतन योग्य सदस्यताओं के साथ लेन-देन संबंधी प्रतिकृति मानक लेन-देन प्रतिकृति का एक संवर्द्धन है जो सदस्यता पर होने वाले डेटा परिवर्तनों को ट्रैक करता है। जब भी अपडेट करने योग्य सदस्यता पर डेटा परिवर्तन शुरू किए जाते हैं, तो उन्हें पहले प्रकाशक और फिर अन्य सदस्यों को प्रचारित किया जाएगा।
      • पीयर-टू-पीयर प्रतिकृति मानक लेन-देन प्रतिकृति का एक संवर्द्धन है। यह कई सर्वर इंस्टेंस में लगभग वास्तविक समय में लेन-देन के अनुरूप परिवर्तनों का प्रचार करता है।
      • द्विदिशात्मक प्रतिकृति मानक लेन-देन प्रतिकृति का एक संवर्द्धन है जो दो सर्वरों (केवल 2 सर्वरों तक सीमित है और इसलिए द्विदिश नाम दिया गया है) को प्रकाशक के रूप में कार्य करने वाले किसी भी सर्वर के साथ एक दूसरे में डेटा परिवर्तनों का आदान-प्रदान करने की अनुमति देता है (दूसरे सर्वर में परिवर्तन भेजने के लिए) या एक सब्सक्राइबर के रूप में (दूसरे सर्वर से परिवर्तन प्राप्त करने के लिए)।
    2. प्रतिकृति मर्ज करें - प्रकाशक और सब्सक्राइबर दोनों में होने वाले डेटा परिवर्तनों को कैप्चर करने का समर्थन करता है और इसे दूसरे सर्वर पर वितरित करता है। मर्ज प्रतिकृति के लिए ROWGUID . की आवश्यकता है मर्ज प्रतिकृति में शामिल तालिका लेखों पर कॉलम। यह प्रकाशक और सब्सक्राइबर में डेटा परिवर्तनों को पकड़ने के लिए ट्रिगर्स का उपयोग करता है। इसके अलावा, जब प्रकाशक और सब्सक्राइबर दोनों नेटवर्क से जुड़े होते हैं, तो यह सर्वर में परिवर्तन वितरित करता है। मर्ज प्रतिकृति प्रकाशक और सब्सक्राइबर में डेटा परिवर्तनों को दोहराने के लिए मर्ज एजेंट का उपयोग करती है।
    3. स्नैपशॉट प्रतिकृति - जैसा कि नाम से संकेत मिलता है, स्नैपशॉट प्रतिकृति परिवर्तनों को पकड़ने के लिए लेन-देन लॉग या ट्रिगर पर निर्भर नहीं है। यह प्रकाशन में शामिल लेखों का एक स्नैपशॉट लेता है और स्नैपशॉट के समय उपलब्ध रिकॉर्ड के साथ इसे सब्सक्राइबर पर लागू करता है। स्नैपशॉट प्रतिकृति प्रकाशक का स्नैपशॉट लेने के लिए स्नैपशॉट एजेंट का उपयोग करती है और इन रिकॉर्ड को सब्सक्राइबर पर लागू करने के लिए वितरण एजेंट का उपयोग करती है।

    SQL सर्वर लेनदेन संबंधी प्रतिकृति

    लेन-देन संबंधी प्रतिकृति आमतौर पर उन परिदृश्यों में पसंद की जाती है जहां OLTP प्रकाशक डेटाबेस में भारी डेटा INSERT/UPDATE और/या DELETE गतिविधियां होती हैं।

    चूंकि प्रकाशक सर्वर इंस्टेंस में विशाल डिस्क आईओ हो रहा है, इसलिए रिपोर्ट तैयार करने से गंभीर अवरोध हो सकते हैं। यह सर्वर के प्रदर्शन को भी प्रभावित कर सकता है। इसलिए, लगभग रीयल-टाइम डेटा वाला एक अन्य सर्वर रिपोर्टिंग आवश्यकताओं को ऑफ़लोड करने के लिए अच्छा है।

    लेन-देन प्रतिकृति के लिए मूलभूत आवश्यकताओं में से एक यह है कि दोहराए गए तालिकाओं में प्राथमिक कुंजी उपलब्ध होनी चाहिए।

    हम संक्षेप में बता सकते हैं कि लेन-देन संबंधी प्रतिकृति कैसे काम करती है। नीचे दिए गए ट्रांजैक्शनल प्रतिकृति आर्किटेक्चर आरेख पर एक नज़र डालें जो आधिकारिक Microsoft दस्तावेज़ीकरण से लिया गया है।

    प्रकाशन प्रकाशक डेटाबेस पर बनाया गया है जिसमें सब्सक्राइबर डेटाबेस की प्रतिकृति के लिए लेखों की सूची शामिल है।

    लेन-देन संबंधी प्रतिकृति आमतौर पर प्रकाशक से वितरक तक स्नैपशॉट एजेंट या पूर्ण बैकअप के माध्यम से प्रारंभ की जाएगी। स्नैपशॉट एजेंट प्रतिकृति कॉन्फ़िगरेशन विज़ार्ड के माध्यम से समर्थित है। ट्रांजेक्शनल रेप्लिकेशन को इनिशियलाइज़ करने के लिए टीएसक्यूएल स्टेटमेंट्स के जरिए फुल बैकअप सपोर्ट करता है।

    लॉग रीडर एजेंट ट्रैक किए गए लेखों के लिए प्रकाशक डेटाबेस के लेन-देन संबंधी लॉग को स्कैन करता है। फिर यह डेटा परिवर्तन को ट्रांजेक्शनल लॉग से वितरण डेटाबेस में कॉपी करता है।

    वितरण डेटाबेस या तो प्रकाशक या सब्सक्राइबर में हो सकता है; यह या कोई अन्य स्वतंत्र SQL सर्वर इंस्टेंस भी हो सकता है।

    निम्नलिखित बातों पर भी ध्यान दें:

    • लॉग रीडर एजेंट प्रतिकृति के लिए चिह्नित नए आदेशों को स्कैन करने के लिए वितरक सर्वर से लगातार चलता है। हालांकि, अगर आप लगातार दौड़ना नहीं चाहते हैं और इसके बजाय शेड्यूल पर चलना चाहते हैं, तो हम लॉग रीडर एजेंट एसक्यूएल जॉब को बदल सकते हैं जो कि बनाया जाएगा।
    • लॉग रीडर एजेंट ट्रांजेक्शनल लॉग इन बैचों से प्रतिकृति के लिए चिह्नित सभी रिकॉर्ड उठाता है और उन्हें वितरण डेटाबेस को भेजता है।
    • लॉग रीडर एजेंट प्रकाशक डेटाबेस के लेन-देन लॉग से केवल प्रतिबद्ध लेनदेन उठाता है। इसलिए, प्रकाशक डेटाबेस पर लंबे समय से चल रही कोई भी क्वेरी सीधे प्रतिकृति को प्रभावित कर सकती है क्योंकि यह सक्रिय लेनदेन के पूरा होने की प्रतीक्षा कर रहा है।

    डिस्ट्रीब्यूशन एजेंट डिस्ट्रीब्यूशन डेटाबेस से सभी अनडिस्ट्रिब्यूटेड नए कमांड्स को उठाता है और उन्हें पुश या पुल मैकेनिज्म के जरिए सब्सक्रिप्शन डेटाबेस पर लागू करता है। जैसा कि पहले उल्लेख किया गया है, यदि पुश सब्सक्रिप्शन डिस्ट्रीब्यूटर डिस्ट्रीब्यूशन डेटाबेस से सब्सक्राइबर में परिवर्तन लागू करने के लिए स्वामित्व लेता है जबकि पुल सब्सक्रिप्शन में सब्सक्राइबर डेटाबेस डिस्ट्रीब्यूशन डेटाबेस से सब्सक्राइबर को परिवर्तन लाने के लिए स्वामित्व लेता है।

    वितरण से सब्सक्राइबर डेटाबेस में रिकॉर्ड सफलतापूर्वक वितरित होने के बाद, उन्हें वितरित के रूप में चिह्नित किया जाएगा और वितरण डेटाबेस से हटाने के लिए चिह्नित किया जाएगा। डिस्ट्रीब्यूशन क्लीन अप नामक प्रमुख प्रतिकृति रखरखाव नौकरियों में से एक:वितरण डेटाबेस आकार को नियंत्रण में बनाए रखने के लिए वितरण डेटाबेस से वितरित रिकॉर्ड को हटाने के लिए वितरण कार्य हर 10 मिनट में एक बार चलता है।

    प्रतिकृति और लेन-देन प्रतिकृति की अवधारणाओं की विस्तृत व्याख्या के साथ, हम AdventureWorks के लिए प्रतिकृति को कॉन्फ़िगर करके इस पर अपना हाथ पा सकते हैं। सैद्धांतिक रूप से चर्चा किए गए प्रत्येक घटक के लिए डेटाबेस और सत्यापन प्रतिकृति।

    लेन-देन प्रतिकृति चरण दर चरण कॉन्फ़िगर करना (SSMS GUI के माध्यम से)

    लेन-देन प्रतिकृति कॉन्फ़िगरेशन में 3 प्रमुख चरण शामिल हैं:

    1. वितरण डेटाबेस को कॉन्फ़िगर करना
    2. प्रकाशन निर्माण
    3. सदस्यता निर्माण

    प्रतिकृति को कॉन्फ़िगर करने का प्रयास करने से पहले, सुनिश्चित करें कि प्रतिकृति घटक SQL सर्वर स्थापना के भाग के रूप में स्थापित हैं या प्रतिकृति घटकों को स्थापित करने के लिए SQL सर्वर मीडिया का उपयोग करते हैं, क्योंकि वे कार्य के लिए आवश्यक हैं।

    SSMS में, प्रकाशक डेटाबेस इंस्टेंस . से कनेक्ट करें और प्रतिकृति पर राइट-क्लिक करें :

    वितरण अभी कॉन्फ़िगर नहीं किया गया है। इसलिए, हमारे पास कॉन्फिगर डिस्ट्रीब्यूशन विकल्प है। हम या तो वितरण डेटाबेस को कॉन्फ़िगर वितरण विज़ार्ड का उपयोग करके या प्रकाशन निर्माण विज़ार्ड के माध्यम से कॉन्फ़िगर कर सकते हैं।

    वितरण डेटाबेस और प्रकाशन को कॉन्फ़िगर करने के लिए, निम्न चरणों का पालन करें:

    विस्तार करें प्रतिकृति और नया प्रकाशन पर राइट-क्लिक करें

    नया प्रकाशन विज़ार्ड लॉन्च करेगा। अगला क्लिक करें वितरक को देखने के लिए कॉन्फ़िगरेशन विकल्प।

    डिफ़ॉल्ट रूप से, यह प्रकाशक सर्वर को वितरण डेटाबेस रखने के लिए चुनता है। यदि आप दूरस्थ वितरण डेटाबेस का उपयोग करना चाहते हैं, तो दूसरा विकल्प चुनें। अगला क्लिक करें

    अगला विकल्प स्नैपशॉट फ़ोल्डर को कॉन्फ़िगर करने के लिए है . इसे आवश्यक फ़ोल्डर में बदलें। अन्यथा, यह डिफ़ॉल्ट रूप से SQL सर्वर स्थापना फ़ोल्डर पथ पर बनाया जाएगा। अगला क्लिक करें

    प्रकाशन डेटाबेस चुनें (यहाँ यह है AdventureWorks ) और अगला . क्लिक करें

    प्रकाशन प्रकार चुनें - लेन-देन संबंधी प्रतिकृति . अगला क्लिक करें

    चुनें लेख इस प्रकाशन के लिए। परीक्षण उद्देश्यों के लिए, सभी तालिकाओं का चयन करें और दृश्य :

    अगला . पर क्लिक करने से पहले , कुछ मुद्दों को सत्यापित करने के लिए तालिकाओं को एक बार फिर विस्तृत करें।

    कुछ तालिकाओं को लाल चिह्नों द्वारा चिह्नित किया जाता है। जब हम उन तालिकाओं पर क्लिक करते हैं, तो हम यह संकेत देते हुए चेतावनी देखते हैं कि तालिका को दोहराया नहीं जा सकता क्योंकि इसमें प्राथमिक कुंजी नहीं है, जो लेनदेन संबंधी प्रतिकृति के लिए महत्वपूर्ण आवश्यकताओं में से एक है। हम बाद में और अधिक विस्तार में जाएंगे। अब, अगला क्लिक करें

    अनुच्छेद संबंधी समस्याएं with वाला एक पृष्ठ निर्भरता से संबंधित दिखाई देगा। अगला क्लिक करें

    अगला विकल्प है तालिका पंक्तियों को फ़िल्टर करना - चूंकि हम मूल प्रतिकृति का परीक्षण कर रहे हैं, हम इसे अनदेखा कर सकते हैं। अगला क्लिक करें

    स्नैपशॉट एजेंट कॉन्फ़िगर करें - अनदेखा करें और अगला क्लिक करें

    एजेंट सेटिंग - सुरक्षा सेटिंग . क्लिक करें स्नैपशॉट एजेंट और लॉग रीडर एजेंट को निष्पादित करने के लिए खाते को कॉन्फ़िगर करने के लिए।

    फिर, स्नैपशॉट एजेंट प्रक्रिया बदलें SQL सर्वर एजेंट सेवा खाते के अंतर्गत चलाने के लिए।

    लॉग रीडर एजेंट सेट करें करने के लिए प्रकाशक से कनेक्ट करें> प्रक्रिया खाते का प्रतिरूपण करके . ठीकक्लिक करें

    एजेंट सुरक्षा अद्यतन हो जाएगी।

    इस प्रकार, हमने वितरक . को कॉन्फ़िगर किया है और प्रकाशन . के सभी तत्व जैसे लेख , स्नैपशॉट एजेंट , लॉग रीडर एजेंट , और एजेंट प्रतिभूतियां . हमने विज़ार्ड के माध्यम से प्रकाशन निर्माण लगभग पूरा कर लिया है।

    यदि आपको प्रकाशन बनाने के लिए उपयोग की जाने वाली TSQL स्क्रिप्ट पर आगे अध्ययन करने की आवश्यकता है, तो हम प्रकाशन बनाने के लिए एक स्क्रिप्ट फ़ाइल जेनरेट करें देख सकते हैं। विकल्प। अन्यथा, अगला क्लिक करें

    चूंकि मैंने फ़ाइल को सहेजना चुना है, इसलिए विज़ार्ड मुझे स्क्रिप्ट फ़ाइल पथ सेट करने की अनुमति देता है और नाम . ये विवरण प्रदान करें और अगला click क्लिक करें

    विज़ार्ड अंत में प्रकाशन नाम . के लिए पूछता है , मैंने इसका नाम AdventureWorks_pub . रखा है आसान पहचान के लिए इसे एक प्रकाशन के रूप में इंगित करने के लिए डेटाबेस नाम और कीवर्ड के साथ।

    सारांश . पर उपलब्ध कराए गए सभी डेटा सत्यापित करें पृष्ठ पर क्लिक करें और समाप्त करें . क्लिक करें

    विज़ार्ड प्रकाशन बनाना . में प्रगति प्रदर्शित करेगा . जब यह पूरा हो जाएगा, तो हम पुष्टिकरण देखेंगे। बंद करें Click क्लिक करें

    वितरक . के सफल निर्माण को सत्यापित करने के लिए (वितरण डेटाबेस), सिस्टम डेटाबेस का विस्तार करें:

    प्रकाशन . के सफल निर्माण को सत्यापित करने के लिए , विस्तृत करें स्थानीय प्रकाशन :

    हमने वितरण डेटाबेस को कॉन्फ़िगर किया है और AdventureWorks डेटाबेस पर प्रकाशन डेटाबेस बनाया है सफलतापूर्वक। अब हम सदस्यता के साथ आगे बढ़ सकते हैं निर्माण

    नए प्रकाशन पर राइट-क्लिक करें हमने अभी-अभी बनाया है और नई सदस्यता का चयन करें :

    नई सदस्यता विज़ार्ड दिखाई देगा। प्रक्रिया शुरू करने के लिए, अगला क्लिक करें

    प्रकाशन पृष्ठ यह सुनिश्चित करने के लिए कहता है कि दोनों प्रकाशन और प्रकाशक डेटाबेस चुने गए हैं। अगला क्लिक करें

    वितरण एजेंट सेट करें या तो पुश या खींचें अंशदान। हम प्रकाशक सर्वर का उपयोग करने जा रहे हैं सब्सक्राइबर के रूप में, और उस प्रकार का कोई प्रभाव नहीं पड़ेगा। इसलिए, हम डिफ़ॉल्ट पुश . छोड़ देते हैं अंशदान। अगला क्लिक करें

    सदस्यों को चुनें (डेटाबेस)। मैं AdventureWorks_REPL का चयन कर रहा हूं उसी AdventureWorks डेटाबेस बैकअप से पुनर्स्थापित किया गया। अगला क्लिक करें

    एजेंट सुरक्षा सेट करें :

    चूंकि मैं एक ही सर्वर में सब कुछ करने जा रहा हूं, इसलिए मैं एजेंट सेवा खाते का उपयोग कर रहा हूं

    अगली विंडो वितरण एजेंट सुरक्षा प्रस्तुत करती है मान पहले से कॉन्फ़िगर किए गए हैं। अगला क्लिक करें

    सिंक्रनाइज़ेशन शेड्यूल - इसे डिफ़ॉल्ट पर छोड़ दें। अगला क्लिक करें

    सदस्यता प्रारंभ करें - इसे डिफ़ॉल्ट मानों के साथ छोड़ दें। अगला क्लिक करें

    सभी आवश्यक विवरण प्रदान करने के बाद, आप सदस्यता बनाने की प्रक्रिया को पूरा करने में सक्षम होंगे। स्क्रिप्ट फ़ाइल जेनरेट करें... . देखें बाद में स्क्रिप्ट का अध्ययन करने का विकल्प और अगला . क्लिक करें

    फ़ाइलों को सहेजने के लिए पथ प्रदान करें, अगला क्लिक करें

    सारांश पर एक नज़र डालें और सभी कॉन्फ़िगर किए गए मानों की जांच करें। एक बार सत्यापित हो जाने पर, समाप्त करें click क्लिक करें

    सदस्यता निर्माण पूरा हो गया है। बंद करें Click क्लिक करें

    अब हम सदस्यता देख सकते हैं हमारे प्रकाशन . के अंतर्गत प्रदर्शित होता है

    स्नैपशॉट एजेंट को कॉन्फ़िगर करें

    हमारा अगला कदम स्नैपशॉट . पर काम करना है एजेंट प्रकाशक . से आरंभिक डेटा भेजने के लिए करने के लिए सदस्य

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

    प्रतिकृति पर राइट-क्लिक करें /स्थानीय प्रकाशन /स्थानीय सदस्यता /प्रकाशन या सदस्यता हमने प्रतिकृति मॉनीटर . को लॉन्च करने के लिए बनाया है जैसा कि नीचे दिखाया गया है:

    प्रतिकृति मॉनीटर . में , विस्तृत करें प्रकाशक सर्वर (RRJ)> प्रकाशन ([AdventureWorks]:AdventureWorks_pub) सदस्यता विवरण प्रदर्शित करने के लिए। सदस्यता पर राइट-क्लिक करें और विवरण देखें . चुनें

    जैसा कि हम देख सकते हैं, आरंभिक स्नैपशॉट . के बारे में जानकारी हमारे प्रकाशन के लिए AdventureWorks_pub अभी उपलब्ध नहीं है। सब्सक्राइबर डेटाबेस को प्रारंभिक डेटा भेजने के लिए हमें स्नैपशॉट एजेंट कार्य निष्पादित करना होगा

    स्नैपशॉट एजेंट कार्य प्रारंभ करने के बाद स्नैपशॉट की प्रगति देखने के लिए इस विंडो को खुला रखें .

    प्रकाशन पर राइट-क्लिक करें > स्नैपशॉट एजेंट की स्थिति देखें :

    एजेंट कभी नहीं चलाया गया संदेश बताता है कि हमने स्नैपशॉट एजेंट को कभी निष्पादित नहीं किया है। शुरू करें . क्लिक करें

    जबकि स्नैपशॉट एजेंट क्रियान्वित कर रहा है, आप प्रगति देख सकते हैं:

    जब सभी स्नैपशॉट बनाए जाते हैं, तो यह पुष्टिकरण संदेश देगा:

    हम स्नैपशॉट फ़ोल्डर में नई बनाई गई स्नैपशॉट फ़ाइलें देख सकते हैं जिसके लिए हमने पहले पथ प्रदान किया था।

    वितरण एजेंट . द्वारा सभी स्नैपशॉट लागू करने के बाद सदस्यता डेटाबेस . के लिए , यह नीचे की स्थिति को खुले में प्रदर्शित करेगा प्रतिकृति मॉनिटर खिड़की:

    बधाई! हमने स्नैपशॉट एजेंट का उपयोग करके लेनदेन संबंधी प्रतिकृति को सफलतापूर्वक कॉन्फ़िगर किया है।

    नोट :यदि हमारे पास एक विशाल प्रकाशक डेटाबेस है, तो स्नैपशॉट बनाने में बहुत समय लग सकता है। इस प्रकार, स्नैपशॉट एजेंट को निष्पादित करने के बजाय प्रकाशक डेटाबेस के पूर्ण बैकअप का उपयोग करने की अनुशंसा की जाती है - हम इस मुद्दे को बाद के लेखों में शामिल करेंगे।

    प्रतिकृति घटकों का सत्यापन

    प्रत्येक प्रतिकृति घटकों को एसएसएमएस जीयूआई और टीएसक्यूएल दोनों प्रश्नों द्वारा सत्यापित किया जा सकता है। हम आगे के लेखों में इस पर चर्चा करेंगे, और यहां हम जल्दी से बताएंगे कि नीचे दिए गए घटकों के गुणों को कैसे देखा जाए।

    प्रकाशक

    SSMS में, प्रतिकृति पर राइट-क्लिक करें > प्रकाशक गुण > प्रकाशन डेटाबेस :

    प्रकाशक . के बारे में विवरण देखने के लिए , वितरण डेटाबेस के विरुद्ध नीचे दिए गए प्रश्नों को निष्पादित करें।

    USE distribution
    GO
    exec sp_helpdistpublisher
    GO
    select * from MSpublisher_databases
    GO
    

    सदस्य

    सब्सक्राइबर की जानकारी SSMS में नीचे दी गई क्वेरी से प्राप्त की जा सकती है।

    USE distribution
    GO
    exec sp_helpsubscriberinfo
    GO
    select * from MSsubscriber_info
    

    वितरक

    SSMS में, प्रतिकृति पर राइट-क्लिक करें > वितरक गुण :

    प्रकाशक पर क्लिक करें इस वितरण डेटाबेस का उपयोग करने वाले सभी प्रकाशकों की सूची प्रदर्शित करने के लिए।

    SSMS में, हम समान विवरण प्राप्त करने के लिए नीचे दी गई क्वेरी चला सकते हैं।

    USE distribution
    GO
    exec sp_helpdistributor
    GO
    exec sp_helpdistributiondb
    GO	
    
    

    लेख

    प्रकाशन पर राइट-क्लिक करें > प्रकाशन गुण > लेख . आप उपलब्ध सभी लेखों की सूची देखेंगे। अलग-अलग लेखों के गुणों को अनुच्छेद गुण . पर क्लिक करके संशोधित किया जा सकता है साथ ही।

    USE AdventureWorks
    GO
    -- To View all articles available under a Publication
    exec sp_helparticle @publication = 'Adventureworks_pub'
    GO
    -- To View all article columns for a particular article available under a Publication
    exec sp_helparticlecolumns @publication = 'Adventureworks_pub', @article = 'Address'
    GO
    USE distribution
    GO
    SELECT * from MSArticles
    

    प्रकाशन

    प्रकाशन पर राइट-क्लिक करें > गुण :

    SSMS में, हम प्रकाशन गुण देखने के लिए नीचे दी गई क्वेरी चला सकते हैं :

    USE AdventureWorks
    GO
    exec sp_helppublication
    GO
    USE distribution
    GO
    SELECT * FROM MSPublications
    

    सदस्यता

    सदस्यता पर राइट-क्लिक करें > सदस्यता गुण :

    SSMS में, हम सब्सक्रिप्शन जानकारी प्राप्त करने के लिए नीचे दी गई स्क्रिप्ट को निष्पादित कर सकते हैं:

    USE AdventureWorks
    GO
    exec sp_helpsubscription
    GO
    USE distribution
    GO
    SELECT * FROM MSsubscriptions
    GO
    

    प्रतिकृति एजेंट

    SQL सर्वर एजेंट जॉब्स के अंतर्गत , हम विशिष्ट नौकरियां ढूंढ सकते हैं सभी प्रतिकृति एजेंटों के लिए बनाया गया:

    SSMS में, हम यह पता लगाने के लिए क्वेरी निष्पादित कर सकते हैं कि कौन सा कार्य आवश्यक है लॉग रीडर एजेंट जॉब , स्नैपशॉट एजेंट कार्य , और वितरण एजेंट नौकरियां . इसके अलावा, हम वितरण एजेंट सफाई कार्य देख सकते हैं और जब हम आंतरिक रूप से प्रकाशन और सदस्यता स्थापित कर रहे थे, तब प्रतिकृति से संबंधित कई अन्य नौकरियां बनाई गईं।

    लॉग रीडर एजेंट कैसे काम करता है

    लॉग रीडर एजेंट प्रकाशक डेटाबेस ट्रांजेक्शनल लॉग से सभी प्रतिबद्ध डेटा को पढ़ता है और इसे वितरक डेटाबेस में धकेलता है। भले ही Microsoft लेन-देन संबंधी लॉग को पढ़ने का आधिकारिक तरीका प्रदान नहीं करता है, लेकिन कुछ अनिर्दिष्ट कार्य हैं जैसे fn_dblog() और fn_dump_dblog() जो लॉग फाइलों से डेटा पढ़ सकता है। हालाँकि, ये फ़ंक्शन अनिर्दिष्ट हैं और Microsoft समर्थन द्वारा कवर नहीं किए गए हैं। इस प्रकार, हम उन्हें और अधिक एक्सप्लोर नहीं करेंगे।

    डिस्ट्रीब्यूशन एजेंट सब्सक्राइबर डेटाबेस में डेटा परिवर्तन कैसे वितरित करता है

    वितरण डेटाबेस में डेटा लिखे जाने के बाद, हम पढ़ सकते हैं कि वितरण तालिका में डेटा कैसे संग्रहीत किया जाता है। उसके लिए, हम sp_browsereplcmds . लागू करते हैं प्रक्रिया - यह MSrepl_commands . पर रिकॉर्ड प्राप्त करती है और MSrepl_transactions टेबल.

    सीखने के उद्देश्य से, आइए Person.ContactType नाम के 3 कॉलम वाली एक टेबल लें। :

    बनाई गई सदस्यता प्रत्येक लेख के लिए 3 प्रक्रियाएँ बनाएगी जो नीचे दिए गए नामकरण सम्मेलनों के साथ सब्सक्राइबर डेटाबेस में प्रकाशन का हिस्सा है:

    • dbo.sp_MSins_
    • dbo.sp_MSupd_
    • dbo.sp_MSdel_

    Person.ContactType तालिका लेख के लिए, हम सब्सक्राइबर डेटाबेस में बनाई गई प्रक्रियाओं को नीचे देख सकते हैं:

    • dbo.sp_MSins_PersonContactType - सम्मिलित करें प्रकाशक डेटाबेस के लेन-देन लॉग से नए रिकॉर्ड कैप्चर किए गए और फिर वितरण डेटाबेस में प्रचारित किए गए।
    • dbo.sp_MSupd_PersonContactType - अपडेट करें प्रकाशक डेटाबेस के लेन-देन लॉग से कैप्चर किए गए परिवर्तन और फिर वितरण डेटाबेस में प्रचारित।
    • dbo.sp_MSdel_PersonContactType - हटाएं records captured from Transaction Logs of Publisher database and then propagated to the distribution database.

    Script of the dbo.sp_MSins_PersonContactType Procedure

    As you can see, it’s a straightforward INSERT statement that comes out of the distribution database:

    ALTER procedure [dbo].[sp_MSins_PersonContactType]
        @c1 int,
        @c2 nvarchar(50),
        @c3 datetime
    as
    begin  
    	insert into [Person].[ContactType] (
    		[ContactTypeID],
    		[Name],
    		[ModifiedDate]
    	) values (
    		@c1,
    		@c2,
    		@c3	) 
    end  
    GO
    

    Script of the dbo.sp_MSupd_PersonContactType Procedure

    The script relies on the Primary Key values to identify the unique record for updating:

    ALTER procedure [dbo].[sp_MSupd_PersonContactType]
    		@c1 int = NULL,
    		@c2 nvarchar(50) = NULL,
    		@c3 datetime = NULL,
    		@pkc1 int = NULL,
    		@bitmap binary(1)
    as
    begin  
    	declare @primarykey_text nvarchar(100) = ''
    update [Person].[ContactType] set
    		[Name] = case substring(@bitmap,1,1) & 2 when 2 then @c2 else [Name] end,
    		[ModifiedDate] = case substring(@bitmap,1,1) & 4 when 4 then @c3 else [ModifiedDate] end
    	where [ContactTypeID] = @pkc1
    if @@rowcount = 0
        if @@microsoftversion>0x07320000
    		Begin
    			if exists (Select * from sys.all_parameters where object_id = OBJECT_ID('sp_MSreplraiserror') and [name] = '@param3')
    			Begin
    				
    				set @primarykey_text = @primarykey_text + '[ContactTypeID] = ' + convert(nvarchar(100),@pkc1,1)
    				exec sp_MSreplraiserror @errorid=20598, @param1=N'[Person].[ContactType]', @[email protected]_text, @param3=13233 
    			End
    			Else
    				exec sp_MSreplraiserror @errorid=20598
    		End
    end 
    GO
    

    Script of the dbo.sp_MSdel_PersonContactType Procedure

    This script relies on the Primary Key values to identify a unique record for deleting records from the Subscriber :

    ALTER procedure [dbo].[sp_MSdel_PersonContactType]
    		@pkc1 int
    as
    begin  
    	declare @primarykey_text nvarchar(100) = ''
    	delete [Person].[ContactType] 
    	where [ContactTypeID] = @pkc1
    if @@rowcount = 0
        if @@microsoftversion>0x07320000
    		Begin
    			if exists (Select * from sys.all_parameters where object_id = OBJECT_ID('sp_MSreplraiserror') and [name] = '@param3')
    			Begin
    				
    				set @primarykey_text = @primarykey_text + '[ContactTypeID] = ' + convert(nvarchar(100),@pkc1,1)
    				exec sp_MSreplraiserror @errorid=20598, @param1=N'[Person].[ContactType]', @[email protected]_text, @param3=13234 
    			End
    			Else
    				exec sp_MSreplraiserror @errorid=20598
    		End
    end  
    GO
    

    This clearly explains why Transactional Replication enforces the Primary Key as a key requirement for tables to be added as part of Replication

    Now, let’s see the Transactional Replication in action. Let’s change some data in the Publisher database. For simplicity, I’ll take the same Person.ContactType टेबल।

    Executing the SELECT statement on the table yields 20 records:

    Next, I INSERTed a sample record into the Person.ContactType तालिका:

    And, I UPDATE the newly inserted record:

    DELETE the newly inserted record from the table:

    We need to verify these transactions in Replication using sp_browsereplcmds

    Changes from Person.ContactType were captured from the Transactional Logs of Publisher Database (AdventureWorks ) and sent to the Distribution database in the same order. Later, it was propagated to the Subscriber Database (AdventureWorks_REPL )।

    निष्कर्ष

    Thanks for reading this long power-packed article! We have gone through a variety of topics, such as:

    • Replication Architecture and Terminologies
    • SQL Server Replication Types
    • SQL Server Transactional Replication in Detail
    • SQL Server Transactional Replication Configuration (Default approach)
    • SQL Server Transactional Replication Verification
    • SQL Server Transactional Replication in action

    I hope that you’ve found lots of helpful information in this article. In subsequent parts, we’ll explore troubleshooting various issues that are frequently encountered in Replication, and learn how to handle them more efficiently.


    1. Database
    2.   
    3. Mysql
    4.   
    5. Oracle
    6.   
    7. Sqlserver
    8.   
    9. PostgreSQL
    10.   
    11. Access
    12.   
    13. SQLite
    14.   
    15. MariaDB
    1. SSMS 2019 (v18) के लिए एक्सटेंशन कैसे बनाएं

    2. दुनिया में सबसे लोकप्रिय डेटाबेस प्रबंधन प्रणाली

    3. तिथियों की एक श्रृंखला के बीच तिथियां प्राप्त करना

    4. कोडइग्निटर एमएसएसक्यूएल कनेक्शन

    5. SQL सर्वर प्रबंधन स्टूडियो में क्वेरी इतिहास कैसे देखें