2012-06-01 16 views
6

महिलाओं और गेंट्स -SQL सर्वर में लिंक किए गए सर्वर का उपयोग न करने का कारण?

मैं किसी ऐसे व्यक्ति के साथ काम कर रहा हूं जिसने SQL सर्वर में एक लिंक किए गए सर्वर (इनफॉर्मिक्स) का उपयोग करने का प्रस्ताव दिया है।

उन्होंने पाया है (अज्ञात कारणों से) कि उनके पास एसक्यूएल से कनेक्ट क्लाइंट टूल्स के साथ बेहतर भाग्य है, और एसक्यूएल सर्वर इनफॉर्मिक्स में एसक्यूएल स्टेटस प्रॉक्सी कर रहा है और क्लाइंट टूल्स को इनफॉर्मिक्स पर सीधे इंगित करता है। मेरा विचार, ज़ाहिर है "क्लाइंट को हल करें> इनफॉर्मिक्स कनेक्टिविटी समस्या, हैक का उपयोग न करें" - लेकिन यह बिंदु के अलावा है और शायद आपके द्वारा वास्तव में परक्राम्य नहीं है।

कहा जा रहा है कि प्रदर्शन के संदर्भ में इस दृष्टिकोण के खतरे क्या हैं?

  • सभी प्रश्नों इन्फोर्मिक्स पर एक एकल डाटाबेस मारा है, और हम किसी भी विषम देशी एसक्यूएल टेबल और इन्फोर्मिक्स के बीच मिलती है क्या करने की जरूरत नहीं होगी। एसक्यूएल सर्वर सचमुच प्रॉक्सी/डेटा पंप से ज्यादा कुछ नहीं कर रहा है।
  • निष्पादित किए जा रहे अधिकांश प्रश्न भी ग्रुपिंग और एकत्रीकरण के उचित मूल्य कर रहे हैं, इसलिए (भाग्य के साथ) हम और बक्से के बीच पंक्तियों के टन नहीं बढ़ेंगे।

मेरा प्रश्न:

किसी परिदृश्यों जहां प्रश्न एक "द्वारा समूह" एसक्यूएल सर्वर पर फायर व्यक्ति का कारण होगा पहचान सकते हैं, बारीक पंक्तियों इन्फोर्मिक्स पर एसक्यूएल सर्वर और एकत्रित वहाँ बनाम को लौटा दी करने के लिए ? जहां तक ​​मेरा संबंध है, वह सर्वनाश है।

क्या अन्य (खराब) प्रदर्शन प्रभाव हैं जो इस प्रकार की स्थिति में एक लिंक किए गए सर्वर का उपयोग करते हैं, जिसे मुझे अवगत होना चाहिए (और समाधान को सरल बनाने और क्लाइंट> इनफॉर्मिक्स जाने के तरीके के रूप में उपयोग करने के तरीके के रूप में उपयोग करें)?

धन्यवाद!

उत्तर

8

आप सीधे एसक्यूएल सर्वर से की फार्म पर एक प्रश्न पर लिंक सर्वर का उपयोग करते हैं:

SELECT Col1, col2, col3, SUM(col4) 
FROM LinkedServer.Database.schema.Table 
GROUP BY Col1, col2, col3 

तो यह SQL सर्वर पर एकत्रित प्रदर्शन करेंगे। लेकिन अगर आप OPENQUERY या OPENROWSET उपयोग करते हैं, तो यह प्रश्न जुड़ा हुआ सर्वर पर प्रदर्शन करेंगे और उसके बाद SQL सर्वर के लिए डेटा पुनः प्राप्त:

SELECT * 
FROM OPENQUERY(LinkedServer, ' 
SELECT Col1, col2, col3, SUM(col4) 
FROM Database.schema.Table 
GROUP BY Col1, col2, col3') 
+0

ओह बच्चे! मुझे सीधे इस बात को समझने दो। परिदृश्य 1 में, * सभी * पंक्तियां जो WHERE क्लॉज मानदंडों को पूरा करती हैं, इन्हें समेकित करने के लिए इनफॉर्मिक्स से SQL सर्वर पर प्रवाह होता है। परिदृश्य 2 में, यह सभी इनफॉर्मिक्स पर होता है, और केवल "उत्तर" डेटासेट वापस आता है। वह बुलेट हो सकता है जो मुझे चाहिए! –

+0

@RussellChristopher - हाँ, यही वह है जो मैं कह रहा हूं (हालांकि मुझे वास्तव में यकीन नहीं है कि यह सूचना या SQL सर्वर पर 'WHERE' करता है)। किसी भी मामले में, आपको अभी भी अपने लिंक किए गए सर्वर की आवश्यकता है, लेकिन आप इसका उपयोग कैसे करते हैं एक बड़ा अंतर – Lamak

+0

OPENQUERY का उपयोग करना एक बड़ा अंतर बनाता है, चीयर्स। मुझे भी एक प्राचीन इनफॉर्मिक्स सर्वर (v7.23C1) से लिंक करने का दुर्भाग्य है। – akiller

संबंधित मुद्दे