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

SQL सर्वर ट्रांजेक्शनल प्रतिकृति कॉन्फ़िगरेशन

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

लेन-देन प्रतिकृति व्यवस्थापन

मेरे पिछले लेखों में, हमने नीचे दी गई वस्तुओं के बारे में चरण-दर-चरण निर्देशों का अध्ययन किया था:

  • वितरण कॉन्फ़िगर करें
  • स्नैपशॉट विकल्प के साथ प्रकाशन को कॉन्फ़िगर करें
  • स्नैपशॉट विकल्प के साथ सदस्यता कॉन्फ़िगर करें

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

इस आलेख में, हम पहले कॉन्फ़िगर किए गए SQL सर्वर में लेन-देन संबंधी प्रतिकृति को छोड़ने का प्रयास करते हैं। हम बैकअप दृष्टिकोण का उपयोग करेंगे और निम्नलिखित तरीके से प्रतिकृति से लेख जोड़ेंगे या हटाएंगे:

  • सदस्यता छोड़ें
  • प्रकाशन छोड़ें
  • ड्रॉप डिस्ट्रीब्यूटर या डिस्ट्रीब्यूशन डेटाबेस
  • यदि उपरोक्त में से कोई भी चरण सही ढंग से काम नहीं करता है तो प्रतिकृति को पूरी तरह से साफ करें
  • डेटाबेस बैकअप के साथ प्रतिकृति कॉन्फ़िगर करें
  • विजार्ड और टी-एसक्यूएल दोनों दृष्टिकोणों का उपयोग करके प्रतिकृति से लेख छोड़ें
  • विज़ार्ड और टी-एसक्यूएल दोनों दृष्टिकोणों का उपयोग करके प्रतिकृति में नए लेख जोड़ें
  • एक संग्रहित प्रक्रिया लेख जोड़ें और तालिका लेख और संग्रहीत प्रक्रिया लेख के बीच अंतर का अध्ययन करें

सब्सक्रिप्शन ड्रॉप करें

किसी भी कॉन्फ़िगर किए गए प्रतिकृति को छोड़ने के लिए, हमें पहले सदस्यता छोड़नी होगी।

SSMS में, प्रकाशक इंस्टेंस से कनेक्ट करें> प्रतिकृति > स्थानीय प्रकाशन . सदस्यता पर राइट-क्लिक करें> हटाएं या छोड़ें सदस्यता:

SQL सर्वर आपसे आपकी कार्रवाई की पुष्टि करने के लिए कहेगा:

हां . पर क्लिक करें सदस्यता छोड़ने के लिए। इससे सब्सक्रिप्शन पूरी तरह से बंद हो जाएगा।

मेरे वर्तमान सेटअप में, प्रकाशक और सब्सक्राइबर दोनों एक ही उदाहरण पर हैं। इसलिए, सत्यापन के लिए सब्सक्राइबर इंस्टेंस से जुड़ने के लिए कोई अनुरोध नहीं भेजा गया था। यदि हमारे पास यह SQL सर्वर के किसी भिन्न इंस्टेंस पर होगा, तो यह सब्सक्राइबर को हटाने से पहले सत्यापित करने के लिए सब्सक्राइबर इंस्टेंस से कनेक्ट करने के लिए कहेगा।

प्रकाशन को छोड़ना आंतरिक रूप से sp_droppublication . का उपयोग करता है प्रक्रिया और हम टी-एसक्यूएल दृष्टिकोण के माध्यम से प्रकाशन को मैन्युअल रूप से छोड़ने के लिए इस प्रक्रिया का उपयोग कर सकते हैं

प्रकाशन छोड़ें

एक बार सदस्यता हटा दिए जाने के बाद, हम आगे बढ़ सकते हैं और प्रकाशन . को छोड़ सकते हैं . AdventureWorks_Pub पर राइट-क्लिक करें और हटाएं . चुनें मेनू से:

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

किसी प्रकाशन को छोड़ने से आंतरिक रूप से sp_droppublication लागू होता है प्रक्रिया।

वितरक या वितरण डेटाबेस छोड़ें

पहले हमने उल्लेख किया था कि वितरण डेटाबेस एक सिस्टम डेटाबेस है। इसलिए, हम डेटाबेस पर राइट-क्लिक करके और उपयोगकर्ता डेटाबेस के साथ डिलीट विकल्प का चयन करके इसे छोड़ नहीं सकते। यदि हम वितरण डेटाबेस पर राइट-क्लिक करते हैं, तो हमें केवल निम्न विकल्प मिलते हैं:

जब हमें वितरण डेटाबेस को हटाने की आवश्यकता होती है, तो सबसे पहले हमें प्रतिकृति . पर राइट-क्लिक करना होगा नोड> अक्षम करें प्रकाशन और वितरण

यह विज़ार्ड खोलेगा।

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

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

यदि हमारे सर्वर में केवल एक प्रतिकृति कॉन्फ़िगर किया गया है, तो हम सब कुछ साफ करने के लिए इस विज़ार्ड का उपयोग कर सकते हैं। हालांकि, अगर कई प्रतिकृतियां कॉन्फ़िगर की गई हैं, तो हम ऊपर साझा किए गए मानक चरणों का पालन करके SQL सर्वर में लेनदेन संबंधी प्रतिकृति को छोड़ देते हैं।

अब, हमें पहला विकल्प चुनना होगा हां, इस सर्वर पर प्रकाशन अक्षम करें , और अगला . क्लिक करें

नई विंडो में, दोनों विकल्पों की जांच करें:प्रकाशन और वितरण अक्षम करें और चरणों के साथ एक स्क्रिप्ट फ़ाइल जेनरेट करें...

स्क्रिप्ट फ़ाइल जनरेट करने के लिए, आपको उसे संग्रहीत करने का पथ प्रदान करना होगा।

अगला क्लिक करें और विज़ार्ड में चयनित विकल्पों को देखें। जांचें और सुनिश्चित करें कि आपने सब कुछ सही ढंग से चुना है।

समाप्तक्लिक करें

वितरण डेटाबेस को आंतरिक रूप से छोड़ने से sp_dropdistributor . का उपयोग होता है प्रक्रिया।

डिस्ट्रीब्यूटर के अक्षम होने के बाद, हम देख सकते हैं कि वितरण डेटाबेस सिस्टम डेटाबेस से बाहर हो गया है।

यदि उपरोक्त में से कोई भी चरण ठीक से काम नहीं कर रहा है तो प्रतिकृति को पूरी तरह से साफ करें

यदि किसी अन्य दृष्टिकोण के माध्यम से सदस्यता या प्रकाशन को छोड़ दिया जाता है, तो हम SQL सर्वर में लेन-देन संबंधी प्रतिकृति के असंगत निष्कासन में उतरते हैं और बहुत सारी त्रुटियां प्राप्त करते हैं। सदस्यता या प्रकाशन के सभी अवशेषों को साफ करने के लिए, हम सिस्टम प्रक्रिया का उपयोग कर सकते हैं sp_removedbreplication

exec_spremovedbreplication

इस प्रक्रिया को तभी निष्पादित करें जब उल्लिखित अन्य सभी तरीकों को आजमाने के बाद भी कोई प्रतिकृति समस्या हो। संग्रहित प्रक्रिया sp_removedbreplication प्रकाशक डेटाबेस पर या मास्टर डेटाबेस से निष्पादित किया जाना चाहिए और प्रकाशक डेटाबेस के नाम के साथ @dbname को बदलने के बाद नीचे दिए गए आदेश का उपयोग करना चाहिए।

exec_spremovedbreplication @dbname

बैकअप दृष्टिकोण का उपयोग करके प्रतिकृति कॉन्फ़िगर करें

प्रतिकृति को पूरी तरह से हटाने के बाद, बैकअप दृष्टिकोण का उपयोग करके SQL सर्वर में लेनदेन संबंधी प्रतिकृति को पुन:कॉन्फ़िगर करें। इसमें नीचे दिए गए चरण शामिल हैं:

  • वितरक को कॉन्फ़िगर करें
  • प्रकाशन बनाएं
  • पूर्ण या डिफरेंशियल बैकअप से सदस्यता बनाने में सक्षम करने के लिए प्रकाशन गुणों को संशोधित करें।
  • प्रकाशक का पूर्ण बैकअप लें और इसे एक सदस्य के रूप में पुनर्स्थापित करें।
  • सदस्यता कॉन्फ़िगर करें और बैकअप से प्रारंभ करें।

प्रतिकृति को कॉन्फ़िगर करते समय हम पहले ही अधिकांश चरण निष्पादित कर चुके हैं। इसलिए, हम यहां उन चरणों के बारे में विस्तार से नहीं जाएंगे।

वितरक और प्रकाशन कॉन्फ़िगर करें

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

अब उन स्क्रिप्ट का उपयोग करके वितरक और प्रकाशन बनाने के लिए एक नई क्वेरी विंडो में सहेजी गई स्क्रिप्ट फ़ाइल खोलें:

कृपया टिप्पणी की गई दूसरी पंक्ति पर ध्यान दें - यह बताता है कि हमने विज़ार्ड में दर्ज किए गए सभी पासवर्ड मान सुरक्षा कारणों से NULL या खाली स्ट्रिंग में बदल दिए गए थे। हाइलाइट की गई रेखा को @password =रिक्त मानों के साथ देखें। इसे सही पासवर्ड मानों से बदलें, पासवर्ड वाले अन्य अनुभागों के लिए भी ऐसा ही करें, और स्क्रिप्ट को निष्पादित करें।

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

यदि आवश्यक हो, तो आप वितरण डेटाबेस में सभी तालिकाओं, विचारों और महत्वपूर्ण प्रक्रियाओं के बारे में जानने के लिए परिणामों को संग्रहीत कर सकते हैं। यह जानकारी आगे समस्या निवारण के लिए सहायक होगी।

स्क्रिप्ट के सफल निष्पादन के बाद, हम वितरण डेटाबेस और सफलतापूर्वक बनाए गए प्रकाशन को देख सकते हैं।

पूर्ण या भिन्न बैकअप से सदस्यता बनाना सक्षम करने के लिए प्रकाशन गुण संशोधित करें

यदि डेटाबेस का आकार बहुत छोटा है, तो प्रारंभिक स्नैपशॉट भेजने में लगने वाला समय तेज़ होगा।

दूसरी ओर, स्नैपशॉट का उपयोग करके SQL सर्वर में लेन-देन संबंधी प्रतिकृति बनाना निम्नलिखित मामलों में कुशल नहीं है:

  1. यदि डेटाबेस बहुत बड़ा है (300 जीबी या अधिक)। प्रारंभिक स्नैपशॉट भेजने के लिए आवश्यक समय बहुत लंबा होगा।
  2. यदि सब्सक्राइबर कम नेटवर्क बैंडविड्थ वाले विभिन्न स्थानों पर स्थित है। फिर प्रारंभिक स्नैपशॉट प्रक्रिया कई दिनों तक चलेगी।

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

बैकअप से आरंभीकरण का समर्थन करने के लिए प्रकाशन को सक्षम करने के लिए, हमें प्रकाशन गुणों में से एक को संशोधित करना होगा। यह या तो SSMS या T-SQL के माध्यम से किया जा सकता है।

एसएसएमएस दृष्टिकोण

AdventureWorks_pub पर राइट-क्लिक करें प्रकाशन और गुण . चुनें :

सदस्यता विकल्प पर क्लिक करें :

सत्य सेट करें बैकअप फ़ाइलों से आरंभीकरण की अनुमति दें . के लिए और ठीक . क्लिक करें . यह हमें फुल और डिफरेंशियल बैकअप दोनों से इनिशियलाइज़ करने की अनुमति देगा।

T-SQL दृष्टिकोण

टी-एसक्यूएल में, हम प्रक्रिया को sp_changepublication . कह सकते हैं इस संपत्ति को संशोधित करने के लिए।

इस गुण को बदलने की स्क्रिप्ट नीचे है:

USE AdventureWorks
GO
exec sp_changepublication @publication = 'AdventureWorks_pub', @property = 'allow_initialize_from_backup', @value = 'true'

प्रकाशक का पूर्ण बैकअप लें और उसे सब्सक्राइबर के रूप में पुनर्स्थापित करें

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

सदस्यता कॉन्फ़िगर करें और बैकअप से प्रारंभ करना प्रारंभ करें

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

नोट :सदस्यता निर्माण के लिए स्क्रिप्ट प्रकाशक डेटाबेस से निष्पादित की जानी चाहिए। इसलिए, प्रकाशक इंस्टेंस से कनेक्ट होने वाली क्वेरी विंडो खोलें।

सदस्यता को बैकअप से आरंभ करने के लिए हमें कुछ बदलाव करने होंगे:

  • बदलें @sync_type स्वचालित . से मान बैकअप के साथ आरंभ करने के लिए
  • NULL या खाली स्ट्रिंग से बदले गए पासवर्ड के लिए सही पासवर्ड प्रदान करें। चूंकि मैंने सर्वर के भीतर एजेंट सेवा खाते का उपयोग किया है, इसलिए मुझे पासवर्ड बदलने की आवश्यकता नहीं है।
  • पैरामीटर जोड़ें @backupdevicetype और @backupdevicename और प्रकाशक सर्वर पर पूर्ण या विभेदक बैकअप के लिए पथ प्रदान करें (इस पर स्क्रिप्ट निष्पादित की जाएगी)।

हो जाने पर, हमारी स्क्रिप्ट इस तरह दिखेगी:

सदस्यता कॉन्फ़िगरेशन को पूरा करने के लिए स्क्रिप्ट निष्पादित करें और हम नीचे दिखाए गए अनुसार स्क्रिप्ट के सफल समापन को प्राप्त करेंगे।

जैसा कि स्थिति इंगित करती है, वितरण एजेंट SQL सर्वर एजेंट कार्य को सब्सक्रिप्शन बनाते समय बनाया और लॉन्च किया गया था।

इस प्रकार, हमने बैकअप दृष्टिकोण का उपयोग करके सफलतापूर्वक अपनी प्रतिकृति बनाई है। अब हम उपलब्ध सदस्यता को सत्यापित कर सकते हैं।

प्रतिकृति मॉनिटर लॉन्च करें और सब्सक्राइबर पर राइट-क्लिक करें। यह प्रतिकृति स्थिति दिखाएगा:

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

प्रतिकृति से लेख छोड़ें

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

विज़ार्ड का उपयोग करना

AdventureWorks_pub . पर राइट-क्लिक करें प्रकाशन> गुण . अनुच्छेद पर क्लिक करें प्रतिकृति में शामिल लेखों की सूची देखने के लिए।

डिफ़ॉल्ट रूप से, यह डेटाबेस ऑब्जेक्ट को OBJECT_NAME (SCHEMA_NAME) प्रारूप में सूचीबद्ध करेगा। परीक्षण उद्देश्यों के लिए, आइए Person.ContactType तालिका को छोड़ दें प्रतिकृति से।

उसके लिए, बस ContactType . से पहले बॉक्स को अनचेक करें (व्यक्ति)। SQL सर्वर चेतावनी या पुष्टिकरण संदेश दिखाएगा:

जैसा कि यह स्पष्ट करता है, यदि वर्तमान में कोई स्नैपशॉट उपलब्ध है, तो वह लेखों में परिवर्तन के कारण उन स्नैपशॉट को अमान्य कर देगा।

चूंकि हमने बैकअप दृष्टिकोण का उपयोग करके प्रारंभ किया है और स्नैपशॉट का उपयोग नहीं किया है, इसलिए हम इस संदेश को सुरक्षित रूप से अनदेखा कर सकते हैं और हां पर क्लिक कर सकते हैं इस तालिका आलेख को प्रतिकृति से हटाने के लिए। ठीकक्लिक करें प्रतिकृति से लेख को हटाने को पूरा करने के लिए।

अब Person.ContactType तालिका प्रतिकृति से हटा दी जाती है। प्रकाशक पर होने वाले किसी भी परिवर्तन को सब्सक्राइबर डेटाबेस में नहीं भेजा जाएगा। हम Person.ContactType पर INSERT/UPDATE/DELETE रिकॉर्ड्स द्वारा इसका परीक्षण कर सकते हैं। टेबल।

T-SQL का उपयोग करना

दूसरा तरीका यह है कि sp_droparticle की सहायता से किसी लेख को प्रतिकृति से हटा दिया जाए प्रक्रिया।

USE [AdventureWorks]
GO
EXEC sp_droparticle 
  @publication = N'AdventureWorks_pub', 
  @article = N'ContactType',
  @force_invalidate_snapshot = 1;
GO

विजार्ड या TSQL दृष्टिकोण के माध्यम से प्रतिकृति में नए लेख जोड़ें

कुछ मामलों में (जैसे टेबल रखरखाव), हमें कुछ लेखों को हटाने और रखरखाव पूरा होने के बाद उन्हें प्रतिकृति में वापस जोड़ने की आवश्यकता हो सकती है।

हमने सफलतापूर्वक सीखा है कि प्रतिकृति से लेखों को कैसे हटाया जाए। आइए विचार करें कि प्रतिकृति में नए लेख कैसे जोड़ें। हम Person.ContactType . जोड़ देंगे टेबल जिसे हमने पहले ही प्रतिकृति में हटा दिया है।

विज़ार्ड का उपयोग करना

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

हमें Person.ContactType नहीं मिला तालिका - स्क्रीन केवल उन तालिकाओं को प्रदर्शित करती है जो प्रतिकृति का हिस्सा थीं। प्रकाशक डेटाबेस में उपलब्ध सभी तालिकाओं को देखने के लिए, अनचेक करें सूची में केवल चयनित लेख दिखाएं सभी टेबल देखने के लिए।

अब, हम Person.ContactType . देख सकते हैं तालिका सूचीबद्ध।

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

संपर्क प्रकार (व्यक्ति) की जांच करें तालिका को प्रतिकृति में वापस जोड़ने के लिए और ठीक . पर क्लिक करें ।

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

यदि आपने अभी तक इस लेख को पढ़ा है, तो आपने सही अनुमान लगाया होगा - इस तालिका के लिए प्रारंभिक स्नैपशॉट भेजने के लिए बस स्नैपशॉट एजेंट जॉब चलाएँ।

चलिए अब करते हैं - प्रकाशन . पर राइट-क्लिक करें > देखें स्नैपशॉट एजेंट स्थिति।

शुरू करें . पर क्लिक करें पात्र लेखों के लिए स्नैपशॉट भेजने के लिए। उन डेटा को वितरण डेटाबेस में भेजें, और अंत में, सब्सक्राइबर डेटाबेस को।

T-SQL दृष्टिकोण

हम sp_addarticle . का उपयोग करके समान कार्य कर सकते हैं प्रक्रिया।

नीचे दी गई स्क्रिप्ट प्रतिकृति में लेख जोड़ देगी।

use [AdventureWorks]
GO
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'ContactType', @source_owner = N'Person', @source_object = N'ContactType'
, @type = N'logbased', @description = null, @creation_script = null, @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509F
, @identityrangemanagementoption = N'manual', @destination_table = N'ContactType', @destination_owner = N'Person', @vertical_partition = N'false'
, @ins_cmd = N'CALL sp_MSins_PersonContactType'
, @del_cmd = N'CALL sp_MSdel_PersonContactType'
, @upd_cmd = N'SCALL sp_MSupd_PersonContactType'
GO

हमने पहले देखा है कि INSERT/UPDATE और DELETE संचालन को संभालने के लिए सब्सक्राइबर डेटाबेस में बनाई गई 3 प्रक्रियाओं को लागू करके तालिका लेख के लिए प्रतिकृति कैसे काम करती है।

टी-एसक्यूएल दृष्टिकोण का उपयोग करते हुए, हम जानते हैं कि इन प्रक्रियाओं को कैसे संदर्भित किया जाता है। यदि आवश्यक हो, तो हम वस्तुओं, गंतव्य तालिका नामों या डिफ़ॉल्ट प्रक्रियाओं का नाम बदल सकते हैं। उसके लिए, हम sp_addarticle . में बदलाव करेंगे प्रक्रिया।

नोट :यदि हम प्रतिकृति में कोई संशोधन करते हैं, तो हमें उन सभी को ठीक से प्रलेखित करना चाहिए। अन्यथा, यह बाद में आपदा का कारण बन सकता है।

संग्रहीत कार्यविधि आलेख जोड़ें और तालिका आलेख और संग्रहीत कार्यविधि आलेख के बीच अंतर का अध्ययन करें

प्रतिकृति में एक संग्रहीत कार्यविधि जोड़ने के लिए, हमें लेखों पर जाना होगा पृष्ठ और इसे दोहराने के लिए आवश्यक संग्रहीत प्रक्रिया की जांच करें। हम दृश्यों . के लिए भी ऐसा ही कर सकते हैं , अनुक्रमित दृश्य , या उपयोगकर्ता परिभाषित कार्य साथ ही।

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

प्रतिकृति में एक नया संग्रहीत कार्यविधि लेख जोड़ना

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'uspGetBillOfMaterials', @source_owner = N'dbo'
, @source_object = N'uspGetBillOfMaterials', @type = N'proc schema only', @description = null, @creation_script = null
, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @force_invalidate_snapshot = 1
, @destination_table = N'uspGetBillOfMaterials', @destination_owner = N'dbo'

प्रतिकृति में एक नया दृश्य आलेख जोड़ना

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'vVendorWithContacts', @source_owner = N'Purchasing'
, @source_object = N'vVendorWithContacts', @type = N'view schema only', @description = null, @creation_script = null, @pre_creation_cmd = N'drop'
, @schema_option = 0x0000000008000001, @destination_table = N'vVendorWithContacts', @destination_owner = N'Purchasing'
GO

प्रतिकृति में एक नया अनुक्रमित दृश्य आलेख जोड़ना

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'vStateProvinceCountryRegion', @source_owner = N'Person'
, @source_object = N'vStateProvinceCountryRegion', @type = N'indexed view schema only', @description = null, @creation_script = null
, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001, @force_invalidate_snapshot = 1
, @destination_table = N'vStateProvinceCountryRegion', @destination_owner = N'Person'

प्रतिकृति में एक नया उपयोगकर्ता परिभाषित कार्य लेख जोड़ना

use [AdventureWorks]
exec sp_addarticle @publication = N'AdventureWorks_pub', @article = N'ufnGetStock', @source_owner = N'dbo', @source_object = N'ufnGetStock'
, @type = N'func schema only', @description = null, @creation_script = null, @pre_creation_cmd = N'drop', @schema_option = 0x0000000008000001
, @force_invalidate_snapshot = 1, @destination_table = N'ufnGetStock', @destination_owner = N'dbo'

हम sp_addarticle . का उपयोग करते हैं आवश्यक इनपुट मापदंडों और विकल्पों में शामिल @type को बदलने के साथ प्रतिकृति में किसी भी प्रकार के लेख को जोड़ने की प्रक्रिया पैरामीटर।

हम प्रकाशन . पर राइट क्लिक करके भी इन लेखों को प्रकाशन में जोड़ सकते हैं > गुण > लेख और उन्हें प्रकाशन में जोड़ना।

तालिका आलेख गुण

अब, लेखों . के माध्यम से आलेख गुणों को बदलते हैं प्रकाशन . में मेनू गुण:

हमारे पसंदीदा Person.ContactType . पर क्लिक करें तालिका> लेख गुण . अनुच्छेद गुण . को बदलने का विकल्प होगा केवल इस तालिका के लिए या प्रतिकृति में शामिल सभी तालिकाएँ। एक परीक्षण के लिए, हम हाइलाइट किए गए तालिका आलेख के गुण सेट करें . का चयन करते हैं Person.ContactType . के गुण देखने के लिए टेबल।

इस तालिका के लिए उपलब्ध सभी विकल्प देखें लेख:

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

नीचे दिए गए विकल्पों को प्राप्त करने के लिए INSERT\UPDATE\DELETE वितरण प्रारूप पर क्लिक करें।

  • INSERT\UPDATE\DELETE कथनों को न दोहराएं - प्रतिकृति को अनुकूलित करने के लिए सब्सक्राइबर डेटाबेस को विशिष्ट कमांड नहीं भेजने के लिए
  • INSERT\UPDATE\DELETE स्टेटमेंट - INSERT\UPDATE\DELETE स्टेटमेंट सीधे सब्सक्राइबर को भेजने के बजाय ट्रांजेक्शनल लॉग से डेटा को फिर से बनाने के लिए
  • कॉल करें डेटा दोहराने के लिए।
  • XCALL <संग्रहीत कार्यविधि> - परिवर्तनों को दोहराने के लिए विस्तारित संग्रहीत कार्यविधि निष्पादित करें।

संग्रहीत प्रक्रिया लेख गुण

लेख गुण क्लिक करें गुणों . को देखने के लिए किसी एक संग्रहीत कार्यविधि पर

संग्रहित प्रक्रिया के प्रमुख गुणों में से एक है प्रतिकृति विकल्प - नीचे उपलब्ध विकल्प देखें:

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

लेख गुण देखें

लेख गुण पर क्लिक करें किसी भी दृश्य के लिए गुण प्राप्त करने के लिए :

अनुक्रमित देखें आलेख गुण

लेख गुण पर क्लिक करें गुणों . के लिए अनुक्रमित दृश्यों में से किसी एक के लिए :

उपयोगकर्ता-परिभाषित फ़ंक्शन आलेख गुण

लेख गुण क्लिक करें किसी भी उपयोगकर्ता परिभाषित फ़ंक्शन पर उसके गुणों . के लिए

दृश्यों के गुण, अनुक्रमित दृश्य और उपयोगकर्ता-परिभाषित कार्य काफी समान हैं। इसलिए, हम उन्हें अधिक अनुकूलित नहीं कर सकते।

निष्कर्ष

प्रतिकृति से संबंधित एक और सशक्त लेख के माध्यम से जाने के लिए धन्यवाद। आज, हमने सदस्यता, प्रकाशन, वितरण डेटाबेस को छोड़ने और किसी भी समस्या का सामना करने पर भी प्रतिकृति को पूरी तरह से साफ करने के विवरण को स्पष्ट कर दिया है।

हमने बैकअप से नए इनिशियलाइज़ किए गए प्रतिकृति को कॉन्फ़िगर किया है और परीक्षण किया है कि प्रतिकृति में नए लेख कैसे जोड़े जाएं या उन्हें इससे कैसे हटाया जाए। डेटाबेस के साथ आगे के काम में और, विशेष रूप से, उनके बीच की विसंगतियों का पता लगाने से, आपको पेशेवर उपकरणों से बहुत लाभ होगा। SQL सर्वर के लिए dbForge तुलना बंडल ऐसे सभी अंतरों की पहचान करता है और उनका विश्लेषण करता है और उनकी रिपोर्ट करता है।

अपने अगले लेख में, हम अक्सर सामना किए जाने वाले प्रतिकृति मुद्दों और उन्हें पेशेवर रूप से हल करने के तरीके की जांच करेंगे।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्रॉस लागू करें एक्सएमएल क्वेरी तेजी से खराब प्रदर्शन करती है क्योंकि एक्सएमएल दस्तावेज़ बढ़ता है

  2. SQL सर्वर डेटाबेस में सभी अशक्त स्तंभों की सूची बनाएं

  3. क्या एएनएसआई जॉइन बनाम गैर-एएनएसआई जॉइन क्वेरी अलग-अलग प्रदर्शन करेगी?

  4. SQL सर्वर RAISERROR क्या है?

  5. एसक्यूएल सर्वर में पंक्तियों को कॉलम में कुशलतापूर्वक परिवर्तित करें