"विषम क्वेरी" क्या है?


14

मुझे एक प्रोग्राम में चल रहे SQL क्वेरी के बारे में निम्न त्रुटि संदेश मिला है। SQL सर्वर 2005 T-SQL।

विषम प्रश्नों को कनेक्शन के लिए सेट करने के लिए विकल्पों ANSI_NULLSऔर ANSI_WARNINGSविकल्पों की आवश्यकता होती है । यह लगातार क्वेरी शब्दार्थ सुनिश्चित करता है। इन विकल्पों को सक्षम करें और फिर अपनी क्वेरी पुनः जारी करें। (गंभीरता 16)

इसे ठीक करना आसान है, सेट करें ANSI_NULLSऔर ANSI_WARNINGS ON, लेकिन मैं जानना चाहता था कि एक विषम क्वेरी क्या है। एक Google खोज मुझे सेट करने के लिए दर्जनों परिणाम लाती है , ANSI_NULLSऔर ANSI_WARNINGSयह समझाती है कि शब्द का अर्थ क्या है। क्वेरी है:

UPDATE SRV.DB.DBO.TABLE SET Column=
            (SELECT Column 
            FROM SRV1.DB.DBO.TABLE)

मुझे लगता है कि यह एक क्वेरी में कई डेटाबेस इंजन से जुड़ने के कारण है, क्योंकि मैंने इस त्रुटि को अन्यथा कभी प्राप्त नहीं किया है।
क्या "विषम" केवल इस संदर्भ में दो अलग-अलग डेटाबेस इंजनों को क्वेरी करने के लिए संदर्भित करता है?

जवाबों:


8

क्या "विषम" केवल इस संदर्भ में दो अलग-अलग डेटाबेस इंजनों को क्वेरी करने के लिए संदर्भित करता है?

असल में, हाँ। एक "विषम" क्वेरी को "विषम लिंक्ड सर्वर" पर निष्पादित किया जाता है। इस लिंक किए गए सर्वर के सभी प्रश्न विषम होंगे।

और "विषम" वितरित प्रश्नों का एक सबसेट है

  • वितरित डेटा SQL सर्वर के कई उदाहरणों में संग्रहीत।
  • OLE DB प्रदाता का उपयोग करके विभिन्न संबंधपरक और गैर-प्रासंगिक डेटा स्रोतों में संग्रहीत विषम डेटा।

लेकिन "विषम" हर अब और फिर चबूतरे:

MSDN पर लिंक सर्वर देखें

पूरे उद्यम में विषम डेटा स्रोतों पर वितरित प्रश्नों, अपडेट, आदेशों और लेनदेन को जारी करने की क्षमता ।

sp_addlinkedserver

एक लिंक किया गया सर्वर OLE DB डेटा स्रोतों के विरुद्ध वितरित, विषम प्रश्नों तक पहुंचने की अनुमति देता है।

और "ज्वाइनिंग हेटेरोजेनस डेटा" में सक्रिय निर्देशिका को क्वेरी करने का एक MSDN उदाहरण

और MSDN फिर से "विषम डेटाबेस प्रतिकृति"


6

मेरे ज्ञान का सबसे अच्छा करने के लिए हाँ।

एक समस्या जो मुझे आपकी क्वेरी के साथ दिख रही है वह यह है कि आपके पास यह जानने का कोई तरीका नहीं है कि आपकी लिंक की गई तालिका से कौन सी पंक्ति वापस आने वाली है। क्या यह सिर्फ डमी कोड है या आपकी क्वेरी इस तरह से लिखी गई है?


यह डमी कोड है, एक एकल कॉलम है जिसे मैं 40 डेटाबेस से प्राप्त कर रहा हूं और उन मानों की "स्थिति रिपोर्ट" तालिका में सहेज रहा हूं।
बेन ब्रोका

1
ओह ठीक। बस यह सुनिश्चित करना चाहते थे कि आप जानते हैं कि Srv.db.dbo.table पर उस कॉलम में डाला गया मूल्य SQL सर्वर के किस संस्करण के आधार पर आपके द्वारा कोड चलाए जाने के आधार पर भिन्न हो सकता है। विशेष रूप से SQL 2005 से SQL 2008 तक पोस्ट किए गए कोड का उपयोग करके आपको एक अलग मान मिलेगा।
मन्देनी

अब आपको मेरी दिलचस्पी हो गई है, संभावित मुद्दा क्या है, बस मुझे नहीं पता कि मुझे कौन सी एक पंक्ति मिल रही है? इस मामले में केवल तालिका में एक ही पंक्ति है, यही वजह है कि वहाँ नहीं है जहां उपकुंजी में है।
बेन ब्रोका

यदि तालिका में कई पंक्तियाँ थीं, तो SQL 2005 के साथ आपको पहली पंक्ति मिलती है। SQL 2008 के साथ नई तालिका को दूसरी पंक्ति मिलेगी। (मेरे पास वह पीछे की ओर हो सकता है।)
मर्डेनी सेप

मैं वास्तव में एक "विषम क्वेरी" वास्तव में क्या है यह समझाते हुए एमएस के एक लेख से प्यार करता था, लेकिन ऐसा लगता है कि ऐसा मौजूद नहीं है इसलिए मैं इस सही को चिह्नित कर रहा हूं।
बेन ब्रोका

1

विषम का अर्थ बस अलग है। तो एक विषम क्वेरी एक डेटाबेस में है और एक अलग डेटाबेस क्वेरी कर रहा है। चूंकि डेटाबेस अलग-अलग हैं, यह सेटिंग्स के अलग होने की संभावना को लाता है जो कि इच्छित उद्देश्य से भिन्न परिणाम पैदा कर सकता है।

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