2009-04-24 10 views
6

पर्यावरण: SQL सर्वर 2005 SP2 (9.0.3077) लेन-देन संबंधी प्रकाशन (उत्पादन और बीटा)SQL सर्वर 2005 प्रतिकृति

मैं एक स्थिति है जहाँ मैं दो अलग अलग प्रतिकृति प्रकाशन सेटअप है कि एक ही लेख से कुछ का उपयोग । इनमें से प्रत्येक प्रकाशन एक ग्राहक को एक अलग मशीन पर खिलाता है। इनमें से एक साझा लेख एक तालिका है। नियमित समय अंतराल पर इस तालिका में कई रिकॉर्ड वृद्ध हो जाते हैं और अब इसकी आवश्यकता नहीं होती है। इस समय रिकॉर्ड की गई एक संग्रहित प्रक्रिया को कॉल किया जाता है।

संसाधनों को बचाने और ग्राहकों को विलंबता समय में सुधार करने के लिए मैंने इस संग्रहीत प्रक्रिया पर "संग्रहीत प्रक्रिया निष्पादन" को डिफ़ॉल्ट रूप से "संग्रहीत प्रक्रिया परिभाषा" के बजाय प्रतिलिपि बनाने की प्रक्रिया निर्धारित की है। इस तरह जब संग्रहीत प्रक्रिया 2,000,000+ रिकॉर्ड हटा देती है तो ये ग्राहकों को दोहराना नहीं है। इसके बजाय संग्रहीत प्रक्रिया का निष्पादन दोहराया जाता है और ग्राहकों पर समान प्रतिलिपि संग्रहीत प्रक्रिया निष्पादित की जाती है और यह 2,000,000+ पंक्तियों को हटा देती है।

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

प्रश्न: "संग्रहीत प्रक्रिया का निष्पादन" लेख संपत्ति प्राथमिकता क्यों लेती है और अन्य प्रकाशन में लागू होती है भले ही यह अन्य प्रकाशन में "संग्रहीत प्रक्रिया परिभाषा केवल" पर सेट हो?

+4

यहां Stackoverlfow खेलना नहीं चाहते हैं, हालांकि यह प्रश्न काफी उन्नत SQL सर्वर प्रतिकृति क्वेरी है। मैं इसे माइक्रोसॉफ्ट एसक्यूएल सर्वर प्रतिकृति फोरम पर पोस्ट करने का सुझाव दूंगा और उसके बाद बाद में इस पोस्ट को रिजल्ट के साथ अपडेट करूँगा। –

+2

जबकि मैं अभी भी कुछ प्रतिकृति सामग्री पर काम कर रहा हूं, मैं जॉन से सहमत हूं। यह एक बहुत कठिन सवाल है। सौभाग्य। :) किसी को querytimeout.com –

+3

सहमत होने तक प्रतीक्षा करना पड़ सकता है, हिलेरी कोटर एक प्रसिद्ध प्रतिकृति विशेषज्ञ है और एसक्यूएल सर्वर प्रतिकृति मंच देखता है http://social.msdn.microsoft.com/Forums/en-US/sqlreplication –

उत्तर

2

हम हमारी कंपनी में बड़े पैमाने पर प्रतिकृति का उपयोग के रूप में हमारे पास एसक्यूएल 2008 को विकसित कई देशों में 38 वेयरहाउस लंदन में हमारे प्राथमिक सर्वर पर वापस प्रतिलिपि बनाते हैं।

सबसे पहले, आपके प्रतिकृति फ़िल्टरों को दृश्यों का उपयोग करना चाहिए, यहां तक ​​कि सरल भी। इस तरह, यदि आपको फ़िल्टर को समायोजित करने की आवश्यकता है (WHERE क्लॉज पढ़ें), तो आपको केवल दृश्य और अपना काम बदलने की आवश्यकता है। अन्यथा आपको अपना डेटा दोबारा प्रकाशित करना होगा, और वास्तविक दर्द होने वाले हर किसी को फिर से सब्सक्राइब करना होगा।

आपने उल्लेख किया है कि आप उन्हें ग्राहक और प्रकाशक दोनों को सिंक में रखने के लिए एक ही हटाते हैं। यह मेरी रीढ़ की हड्डी नीचे shivers भेजता है। उन्हें एक स्थान पर हटाने और सर्वर को ग्राहकों को प्रतिलिपि बनाने के लिए दोहराने से कहीं बेहतर है। चूंकि SQL सर्वर 2005, प्रतिकृति अब बहुत तेज़ और कुशल है। एसक्यूएल 2000 प्रतिकृति के लिए काफी धीमा था।यदि आप SQL 2005/2008 का उपयोग करते हैं, तो बस सुनिश्चित करें कि आपका संगतता स्तर (डीबी, गुण, विकल्प पर राइट क्लिक करें) 90 (2005) या 100 (2008) पर सेट है। यह एसक्यूएल सर्वर को तेजी से और कुशल प्रतिकृति विधियों पर स्विच करता है।

एक और तरीका डेटा को मिटाना नहीं है, लेकिन इसे रखने के लिए और प्रकाशन में एक खंड का उपयोग करके इसे फ़िल्टर करें।

0

यह लंबे समय से रहा है क्योंकि मैंने सक्रिय रूप से प्रतिकृति का प्रबंधन किया है, लेकिन मुझे संदेह है कि उत्तर को लॉग-रीडर के आर्किटेक्चर के साथ करना है और आप प्रकाशनों के बीच एक लेख साझा कर रहे हैं। मेरी समझ यह है कि लॉग-रीडर लॉग के माध्यम से ट्रैवल करेगा और दोहराने वाली वस्तुओं पर संचालन की तलाश करेगा। लेख सेटिंग्स के आधार पर, डेटा में व्यक्तिगत परिवर्तन वितरण डेटाबेस में किसी तालिका में पोस्ट किया जा सकता है या प्रक्रिया आमंत्रण का रिकॉर्ड पोस्ट किया जाएगा। किसी भी मामले में, यह लेख की एक संपत्ति है, न कि प्रकाशन (ओं) कि लेख का सदस्य है। मुझे लगता है (लेकिन परीक्षण नहीं किया और सत्यापित) कि आप एक ही डेटाबेस वस्तु के शीर्ष पर एक से अधिक लेख बना सकते हैं और एक = 'logbased' और @ type = 'proc कार्यकारी'

के साथ अन्य @ प्रकार के साथ दोहराया जा चुके हैं नमक की एक बड़ी चुटकी के साथ यह सब लें: हालांकि मैं अब, पिछली बार जब मैंने किया था प्रतिकृति के साथ कुछ भी एसक्यूएल 7. था

pjjH