मैं एक बड़े ईटीएल और डीडब्ल्यू परियोजना पर काम कर रहा हूं जहां हम एसएसएफएस और एसएसडीटी दोनों के साथ मिलकर टीएफएस / स्रोत नियंत्रण का उपयोग करते हैं।
आज, मुझे पता चला कि एक SSIS पैकेज एक डेटाबेस तालिका में BULK INSERT का प्रदर्शन कर रहा है, लेकिन उस डेटाबेस के विरुद्ध SSDT स्कीमा की तुलना करना संभव नहीं है। यह दुर्भाग्यपूर्ण है, क्योंकि हमारे कुछ पैकेजों को पूरा होने में काफी लंबा समय लगता है। हम डेटाबेस के संस्करण नियंत्रण के लिए हमारी SSDT परियोजना में उन्हें बचाने के लिए डेटाबेस संरचना में परिवर्तन का पता लगाने के लिए स्कीमा तुलना फ़ंक्शन का उपयोग करना चाहते हैं।
इस पर थोड़ा और गौर करते हुए, मैंने पाया कि SSDT में स्कीमा तुलना फ़ंक्शन OBJECTPROPERTY()
, डेटाबेस में तालिकाओं पर सिस्टम फ़ंक्शन को कॉल करने वाली SQL स्क्रिप्ट निष्पादित करता है । विशेष रूप से मेरे मामले में, किसी भी कॉल को OBJECTPROPERTY(<object_id>, N'IsEncrypted')
अवरुद्ध होना प्रतीत होता है, जब <object_id>
उस तालिका को संदर्भित करता है जिसे वर्तमान में बल्क डाला जा रहा है।
विज़ुअल स्टूडियो में, SSDT स्कीमा की तुलना थोड़ी देर के बाद की जाती है और दावा करती है कि कोई अंतर नहीं पाया गया है।
क्या SSDT में इस समस्या का समाधान है, या मुझे संभवतः MS Connect बग रिपोर्ट दर्ज करने का प्रयास करना चाहिए?
वैकल्पिक रूप से, चूंकि BULK INSERT एक SSIS पैकेज से होता है, क्या OBJECTPROPERTY
टेबल पर लॉक -कॉल के बिना इस प्रविष्टि को बनाने का कोई तरीका है ? संपादित करें: SSIS OLE DB डेस्टिनेशंस में, हम चेक लॉक को "लॉक टेबल" से हटा सकते हैं, जो ऐसा कहता है, लेकिन यह कुछ स्थितियों में प्रदर्शन को नुकसान पहुंचा सकता है। मैं एक समाधान में बहुत अधिक दिलचस्पी रखता हूं जो एसएसडीटी स्कीमा की तुलना अपने काम को करने की अनुमति देता है, भले ही कुछ वस्तुओं को बंद कर दिया गया हो।