SQL सर्वर डेटा उपकरण और विभाजन कार्य


16

मैं एक स्लाइडिंग विंडो लोडिंग परिदृश्य बना रहा हूं और विभाजन फ़ंक्शन समय के साथ अपनी सीमाओं को बदल रहा होगा।

मैंने अपने SQL सर्वर डेटा टूल्स (SSDT) ​​डेटाबेस प्रोजेक्ट में कुछ प्रारंभिक फंक्शंस हार्डकोड के साथ कुछ विभाजन फ़ंक्शन बनाए हैं।

हालाँकि, जैसे-जैसे समय आगे बढ़ता है और विभाजन के कार्यों की सीमाएँ बदल जाती हैं, भविष्य में SSDT डेटाबेस प्रकाशित होने वाली सीमाएँ मूल लोगों के लिए वापस आ जाएँगी।

क्या इस परिदृश्य को इनायत से संभालने का कोई तरीका है, संभवतः विभाजन कार्यों के प्रकाशन को अक्षम करके?

मैंने डिफॉल्ट से, SSDT में पार्टीशन फ़ंक्शंस की बिल्ड एक्शन प्रॉपर्टी को बदलने की कोशिश की Buildहै None, लेकिन फिर यह प्रोजेक्ट ऑब्जेक्ट्स में अनुपलब्ध संदर्भ के कारण बनाने में विफल रहता है।


4
मैंने हमेशा कहा कि डिफरेंट बेस्ड डिप्लॉयमेंट मौलिक रूप से टूटी हुई है। माइग्रेशन इस तरह के एक बहुत ही बेहतर तैनाती रूपक है !
रेमस रुसानु

'पर ध्यान न दें सूचकांक विकल्प' भी अपने विभाजित सूचकांक हर बार तैनाती शुरू हो रहा है पुनर्निर्माण SSDT से बचने के लिए सेट किया जाना चाहिए।

जवाबों:


16

मैं अपनी समस्या का हल ढूंढने में सक्षम था - आशा है कि यह किसी और की मदद करता है।

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

विकल्प के विवरण से (जोर मेरा):

निर्दिष्ट करता है कि जब आप किसी डेटाबेस में प्रकाशित होते हैं तो विभाजन योजनाओं और कार्यों में अंतर को अनदेखा या अपडेट किया जाना चाहिए।

हालाँकि, यदि आपने पृष्ठ या पंक्ति संपीड़न के साथ एक विभाजन की गई वस्तु (टेबल या इंडेक्स) को परिभाषित किया है, हालांकि विभाजन योजनाओं को अनदेखा करें विकल्प अब विभाजन फ़ंक्शन को दोबारा नहीं बनाता है, फिर भी विभाजित ऑब्जेक्ट को फिर से बनाया जाएगा।

ऐसा इसलिए होता है क्योंकि विभाजन की गई वस्तु को विभाजन के अनुसार परिभाषित संपीड़न के साथ स्क्रिप्ट किया जाता है , और चूंकि ऑब्जेक्ट में विभाजन की एक अलग संख्या है, क्योंकि यह मूल रूप से परिभाषित किया गया था, SSDT प्रकाशन पर ऑब्जेक्ट को फिर से बनाता है। जैसे (स्वरूपित):

WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS (1)
     , DATA_COMPRESSION = PAGE ON PARTITIONS (2)
     , ...

ऐसा नहीं होने के लिए, आप उसी उन्नत प्रकाशित सेटिंग संवाद में, इग्नोर टेबल विकल्प विकल्प की भी जांच कर सकते हैं - बस ध्यान रखें कि आप अन्य विकल्पों, जैसे और ( टेबल विकल्पों का संदर्भ ) की अनदेखी कर रहे होंगे ।ALLOW_ROW_LOCKSALLOW_PAGE_LOCKS

उन्नत प्रकाशन सेटिंग्स संवाद


1
Google ने मुझे यहां पहुंचाया। बहुत बढ़िया जानकारी, साझा करने के लिए धन्यवाद।
जाम

ध्यान दें कि यदि आप परियोजना के गुणों में समान संवाद का उपयोग कर रहे हैं -> डिबग पृष्ठ, .sqlproj.user फ़ाइल में परिवर्तन सहेजे जाएंगे, लेकिन केवल प्रोजेक्ट अनलोड पर ही।
तरण

3

आउच, यह अच्छी स्थिति नहीं है। जहाँ तक मुझे पता है SSDT इसका समर्थन नहीं करता है। सबसे अच्छा समाधान मैं सोच सकता हूं कि एक तालिका में सीमाओं को संग्रहीत करने के लिए पूर्व-परिनियोजन स्क्रिप्ट का उपयोग करना है और फिर पोस्ट-परिनियोजन स्क्रिप्ट में उन मानों का उपयोग करके विभाजन फ़ंक्शन को बदलना है।


यहां मेरे गोंसालू के उत्तर को देखते हुए मेरे उत्तर को अनदेखा करें, मैं स्पष्ट रूप से गलत था।
जाम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.