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

SQL सर्वर डेटाबेस के लिए दो (या n) प्रतिकृति प्रक्रियाओं को कैसे सिंक्रनाइज़ करें?

ऐसा लगता है, दिए गए कार्य को दी गई बाधाओं में हल नहीं किया जा सकता है। अगर मैं सही ढंग से समझूं, तो डेटाबेस की संख्या और पंक्ति की स्कीमा स्थिरांक हैं।

तो, जो वेरिएबल बचे हैं:

  • डेटाबेस में अतिरिक्त "इंजेक्शन"
  • अस्थायी ट्रिक्स
  • ट्रिगर ट्रिक्स
  • परिवर्तनों का "देर से बाध्यकारी", जो समय पर दोहराया नहीं गया

वर्तमान में, मुझे केवल एक ही विचार मिला है, जो काम करता प्रतीत होता है:

  1. "लाइन्स" टेबल पर एक ट्रिगर जोड़ें, "ऑर्डर" रिकॉर्ड टाइम-स्टैम्प (last_line_time) को संशोधित करने के लिए
  2. प्रतिकृति में, समय के साथ एक लाइन तक प्रतीक्षा करें, जो last_line_time के प्रदर्शित होने के बराबर है।
    • यदि max(lines.line_time)> order.last_line_time से ऑर्डर अप्रचलित है
    • यदि max(lines.line_time)
    • अगर मैक्स (लाइन्स.लाइन_टाइम) ==ऑर्डर। लास्ट_लाइन_टाइम सब कुछ ठीक है, तो अभी के लिए :)

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस को Azure SQL डेटाबेस में माइग्रेट करने के तरीके

  2. पेजिंग को लागू करने का कारगर तरीका

  3. यदि किसी स्तंभ में अल्पविराम द्वारा अलग किया गया मान है तो एक अलग पंक्ति बनाएं

  4. जॉइन का उपयोग करते समय क्लॉज बनाम चालू कहां है

  5. SQL सर्वर आंतरिक:योजना कैशिंग पीटी। II - पुन:संकलन योजनाएं