SQL Server 2019 में transactional प्रतिकृति नवीकरणीय सदस्यता सक्षम करें
परिचय और सावधानियां
यह आलेख SQL Server 2019 में प्रतिकृति के लिए लक्षित है। इसमें एक फ़ंक्शन "नवीकरणीय सदस्यता" सक्षम है।
यह सुविधा SQL Server के पिछले संस्करणों में डिफ़ॉल्ट रूप से सक्षम किया गया था, लेकिन (संभवतः) 2017 के बाद से अक्षम किया गया है।
SQL सर्वर के भविष्य के संस्करण इस सुविधा को निकाल सकते हैं। किसी मौजूदा वातावरण को नवीनीकृत करने के अलावा, हम अनुशंसा करते हैं कि आप इसे मर्ज प्रतिकृति आदि के साथ नए निर्माण के लिए प्रतिस्थापित करें।
- संदर्भ
पर्यावरण
दो सर्वर, एक सर्वर और दो SQL सर्वर का उपयोग करें। Windows Server ऐसी स्थिति में है जहाँ स्थापना के तुरंत बाद कोई अतिरिक्त सेटिंग्स नहीं बनाई गई हैं.
- पहली इकाई (प्रकाशन पक्ष)
-
- Windows Server 2019 मानक संस्करण
- SQL Server 2019 डेवलपर संस्करण (मानक संस्करण या उच्चतर आवश्यक)
- SQL सर्वर प्रबंधन स्टूडियो 18.9.1
- दूसरी इकाई (ग्राहक पक्ष)
-
- Windows Server 2019 मानक संस्करण
- SQL सर्वर 2019 एक्सप्रेस संस्करण
- SQL सर्वर प्रबंधन स्टूडियो 18.9.1
लक्ष्य
भले ही तालिका रिकॉर्ड या तो पहले या दूसरे सर्वर डेटाबेस में अद्यतन किए जाते हैं सुनिश्चित करें कि एक-दूसरे के सर्वर पर तालिका रिकॉर्ड सिंक्रनाइज़ किए गए हैं.
वैसे, प्रकाशन पक्ष पर एक ठीक है, लेकिन ग्राहक पक्ष में इकाइयों की किसी भी संख्या हो सकती है। यह भी एक ही सर्वर पर SQL सर्वर के एकाधिक इंस्टेंस के साथ काम करता है।
SQL सर्वर स्थापित कर रहा है
एसक्यूएल सर्वर स्थापित करना इन युक्तियों का मुख्य हिस्सा नहीं है, इसलिए मैं विवरण में नहीं जाऊंगा। केवल प्रतिकृति के लिए प्रासंगिक उन लोगों को सूचीबद्ध कर रहे हैं।
प्रकाशन पक्ष स्थापित करने के लिए मानक संस्करण या उच्चतर की आवश्यकता होती है. यह युक्तियाँ डेवलपर संस्करण को एक परीक्षण वातावरण के रूप में स्थापित करती हैं.
सब्सक्राइबर्स एक्सप्रेस एडिशन के साथ ठीक हैं। बेशक, डीबी कॉन्फ़िगरेशन के आधार पर अन्य संस्करण ठीक हैं।
सुविधा चयन के लिए, डेटाबेस इंजिन सेवा और SQL सर्वर प्रतिकृति का चयन करें। यह प्रकाशन पक्ष और ग्राहक पक्ष दोनों के लिए समान है।
आवृत्ति कॉन्फ़िगरेशन प्रकाशन पक्ष और सब्सक्राइबर पक्ष दोनों के लिए डिफ़ॉल्ट करता है। भले ही आप आवृत्ति नाम परिवर्तित करते हैं, अंतर यह है कि आप बाद में सर्वर विनिर्देश में आवृत्ति नाम निर्दिष्ट करते हैं या नहीं।
प्रकाशन पक्ष पर, SQL Server एजेंट स्वचालित रूप से प्रारंभ करने के लिए कॉन्फ़िगर करें। आप इस सेटिंग को बाद में बदल सकते हैं.
यह टिप SQL Server sa खाते के साथ प्रतिकृति को प्रमाणित करता है। इसलिए, SQL सर्वर प्रमाणन सक्षम करें। यदि आप सुरक्षा कारणों से sa खाते का उपयोग करने के लिए नहीं चाहते हैं, तो बाद में स्पष्टीकरण के SQL Server प्रमाणीकरण भाग को Windows प्रमाणीकरण या किसी अन्य खाते से बदलें।
इस सेटिंग को दोनों सर्वरों पर समान बनाएँ.
SQL सर्वर प्रबंधन स्टूडियो स्थापित कर रहा है
आपके द्वारा डाउनलोड किए गए SQL सर्वर प्रबंधन स्टूडियो स्थापित करें। चूंकि स्थापना स्क्रीन केवल स्थापित करने के लिए है, इसलिए स्पष्टीकरण छोड़ दिया जाता है।
यदि आपको स्थापना के बाद पुनरारंभ करने के लिए कहा जाए, तो Windows को पुनरारंभ करें। साथ ही, Windows अद्यतन में किसी भी पैच स्थापित करें।
कोई प्रकाशन-साइड डेटाबेस और तालिकाएँ बनाएँ
यदि आप प्रकाशन पक्ष पर कोई तालिका बनाते हैं, तो सब्सक्राइबर साइड स्वचालित रूप से तालिका या रिकॉर्ड को दोहराता है.
निर्माण की विधि सामान्य प्रक्रिया के समान है, इसलिए मैं विवरण को छोड़ दूंगा।
आप SQL Server प्रबंधन स्टूडियो में प्रकाशन DB नाम का कोई डेटाबेस बना रहे हैं।
"उपयोगकर्ता" नामक एक तालिका बनाएँ और स्तंभों को निम्नानुसार पंजीकृत करें: आपको बस इतना करना है कि रिकॉर्ड के सिंक्रनाइज़ेशन की जांच करें, इसलिए तालिका का नाम, संख्या और स्तंभ सामग्री कुछ भी हो सकती है। हालांकि, केवल प्राथमिक कुंजी की आवश्यकता है।
यह सुनिश्चित करने के लिए कुछ रिकॉर्ड जोड़ें कि प्रतिकृति बनाए जाने के बाद रिकॉर्ड सिंक्रनाइज़ किए गए हैं.
दूरस्थ कनेक्शंस को कॉन्फ़िगर करना
उन्हें एक दूसरे के सर्वर के डेटाबेस के लिए दूरस्थ पहुँच की अनुमति देने के लिए कॉन्फ़िगर करें। विवरण निम्नलिखित युक्तियों में संक्षेप में दिए गए हैं।
फ़ोल्डर अनुमतियाँ सेट करना
प्रकाशन पक्ष पर सर्वर पर, निम्न फ़ोल्डर के गुण खोलें: फ़ोल्डर पथ SQL सर्वर के संस्करण और आवृत्ति नाम पर निर्भर करता है।
- C:\Program Files\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData
सुरक्षा टैब से, "सेवा" खाता जोड़ें और इसे पूर्ण नियंत्रण पर सेट करें।
वितरण को कॉन्फ़िगर करना
इस बार, वितरण प्रकाशन के रूप में एक ही सर्वर पर बनाया गया है।
SQL सर्वर प्रबंधन स्टूडियो प्रारंभ करें, प्रतिकृतिराइट-क्लिक करें, और वितरण कॉन्फ़िगर करेंका चयन करें।
अगलाक्लिक करें।
< "अपने स्वयं के वितरक > अपना खुद का सर्वर बनाएं" की जाँच करें।
उसके बाद, "अगला" पर क्लिक करें क्योंकि इसे पूरा करना है।
कोई प्रकाशन बनाना
मूल रूप से, यह विज़ार्ड से बनाया गया है जैसा कि निम्न चित्र में दिखाया गया है, SQL Server 2019 में, किसी विज़ार्ड से बनाना "नवीकरणीय सदस्यता" सक्षम नहीं करता है और तालिकाओं के बीच रिकॉर्ड के सिंक्रनाइज़ेशन की अनुमति नहीं देता है।
इसलिए, हम यहाँ प्रकाशन बनाने के लिए T-SQL का उपयोग करते हैं।
SQL सर्वर प्रमाणन के साथ कोई प्रकाशन बनाने के लिए SQL निम्न है: कृपया अपनी सेटिंग के अनुसार पासवर्ड बदलें.
-- トランザクションパブリケーションを追加するための宣言
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'パブリケーションDB';
SET @publication = N'パブリケーション';
SET @login = 'sa';
SET @password = 'saパスワード';
USE [パブリケーションDB]
-- パブリケーションデータベースでトランザクションレプリケーションを有効にする。
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'publish',
@value = N'true';
-- sp_addlogreader_agent を実行して、エージェントジョブを作成します。
EXEC sp_addlogreader_agent
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
-- 即時更新、キュー更新、およびプルサブスクリプションをサポートするトランザクションパブリケーションを作成します。
EXEC sp_addpublication
@publication = @publication,
@status = N'active',
@allow_sync_tran = N'true',
@allow_queued_tran = N'true',
@allow_pull = N'true',
@independent_agent = N'true',
-- 関連するデフォルトのプロパティを明示的に宣言する
@conflict_policy = N'pub wins';
-- デフォルトのスケジュールを使用して、パブリケーションの新しいスナップショットジョブを作成します。
EXEC sp_addpublication_snapshot
@publication = @publication,
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
GO
Windows प्रमाणीकरण का उपयोग करते समय, "sp_addlogreader_agent" और "sp_addpublication_snapshot" भागों को निम्नानुसार परिवर्तित करें.
SQL सर्वर प्रमाणन
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
Windows प्रमाणन
@job_login = @login,
@job_password = @password,
@publisher_security_mode = 1;
यदि यह सफलतापूर्वक बनाया गया है, तो आप निम्न देखेंगे:
साथ ही, बनाए गए प्रकाशन के गुणों को खोलें और सुनिश्चित करें कि "नवीकरणीय सदस्यता" सक्षम है।
लेख निर्दिष्ट करना
मूल रूप से, यदि आप इसे विज़ार्ड के साथ बनाते हैं, तो आप एक ही समय में लेख निर्दिष्ट करेंगे, चूंकि उपरोक्त स्क्रिप्ट में लेख प्रसंस्करण शामिल नहीं है, इसलिए यह गुण से निर्दिष्ट किया गया है।
बाईं ओर मेनू से "लेख" का चयन करें, उस तालिका की जाँच करें जिसे आप सिंक्रनाइज़ करना चाहते हैं, और ठीक बटन पर क्लिक करें।
सिंक्रनाइज़ करने के लिए तालिका के स्तंभों में एक msrepl_tran_version जोड़ा जाता है, और एक ही समय में एक तालिका ट्रिगर जोड़ा जाता है।
कोई सदस्यता बनाएँ
आपके द्वारा अभी-अभी बनाए गए प्रकाशन पर राइट-क्लिक करें और नई सदस्यता का चयन करें.
अगलाक्लिक करें।
आपके द्वारा बनाए गए प्रकाशन का चयन करें.
वितरक <सर्वर नाम> पर सभी एजेंट चलाएँ की जाँच करें।
SQL सर्वर सब्सक्राइबर जोड़ें बटन क्लिक करें।
किसी सदस्य के रूप में पंजीकृत करने के लिए सर्वर (+ आवृत्ति नाम) निर्दिष्ट करता है.
यदि आपके पास कोई सब्सक्राइबर डेटाबेस नहीं है, तो एक नया बनाएँ। यदि यह पहले से मौजूद है, तो इसका चयन करें क्योंकि चयन आइटम प्रदर्शित होता है.
डेटाबेस निर्दिष्ट करने के बाद, अगलाक्लिक करें।
यदि आपके पास एक से अधिक ग्राहक हैं, तो आप यहां जितनी आवश्यकता है उतने पंजीकृत कर सकते हैं।
"..." बटन पर क्लिक करें।
यहां, एजेंट सा खाते के तहत चलता है, लेकिन कृपया इसे अपने पर्यावरण के अनुसार सेट करें।
लगातार चलाएँ का चयन करें।
"नवीकरणीय सदस्यता" सेटिंग चालू होना चाहिए।
"एक ही समय में परिवर्तन कमिट करें" के मामले में, इसे तुरंत सिंक्रनाइज़ किया जाता है, लेकिन सभी सर्वर चलने चाहिए।
"कतार परिवर्तन और यदि संभव हो तो कमिट" कतार में परिवर्तन जमा करता है, इसलिए वे कमिट हैं जब सर्वर चल रहा है, भले ही सर्वर नहीं चल रहा है। हालाँकि, सिंक्रनाइज़ेशन समय धीमा है।
जाँच किसी पूर्वनिर्धारित लिंक किए गए या दूरस्थ सर्वर का उपयोग करें.
अब का चयन करें।
अगलाक्लिक करें।
समाप्त करें बटन क्लिक करें.
यदि कोई त्रुटियाँ नहीं हैं, तो बंद करें.
कुछ क्षणों के बाद, आप देख सकते हैं कि डेटाबेस को सब्सक्राइबर साइड पर बनाया गया है और तालिकाओं को भी बनाया गया है।
आप सत्यापित कर सकते हैं कि रिकॉर्ड भी सिंक्रनाइज़ किए गए हैं.
यदि यह थोड़ी देर के बाद सिंक्रनाइज़ नहीं होता है, तो कृपया निम्नलिखित कार्य करें।
बनाई गई सदस्यता को राइट-क्लिक करें और पुन: प्रारंभ करें का चयन करें।
"नए स्नैपशॉट का उपयोग करें" की जाँच करें और "पुन: आरंभ करने के लिए सेट करें" बटन पर क्लिक करें।
यदि कोई त्रुटि उत्पन्न होती है, तो पुन: प्रयास करें.
कार्रवाई जाँच
प्रकाशन पक्ष पर तालिकाओं को जोड़ने या संशोधित करने का प्रयास करें.
यह सुनिश्चित करने के लिए कुछ सेकंड या उससे अधिक प्रतीक्षा करें कि यह सब्सक्राइबर के लिए सिंक्रनाइज़ किया गया है।
अब चलो ग्राहक पक्ष पर रिकॉर्ड को संशोधित करते हैं।
आप सत्यापित कर सकते हैं कि यह प्रकाशन पक्ष के लिए सिंक्रनाइज़ किया गया है।
यदि आपके पास एकाधिक सदस्य पंजीकृत हैं, तो सुनिश्चित करें कि वे ग्राहकों के बीच सिंक्रनाइज़ किए गए हैं.