यह SQL सर्वर के भीतर एक कमी है। केवल अस्तित्व तालिका पर एक एक्सएमएल कॉलम का यह वितरित प्रश्नों में भाग लेने से रोकता है (उदाहरण के लिए एक लिंक किए गए सर्वर कनेक्शन के माध्यम से पूछताछ की जा रही है)। इस 'सेवानिवृत्त' दस्तावेज़ में इसका उल्लेख है। वर्तमान संस्करण के दस्तावेज़ीकरण में इसका कोई उल्लेख नहीं है।
Microsoft Connect पर प्रासंगिक बग रिपोर्ट हुआ करती थी, लेकिन अब वह Azure फीडबैक फ़ोरम के पक्ष में 'सेवानिवृत्त' हो गई है। यह फ़ीडबैक आइटम "कृपया उत्पाद दस्तावेज़ीकरण से सीधे प्रतिक्रिया सबमिट करें" के निर्देश के साथ बंद है, जो ठीक होगा यदि उत्पाद दस्तावेज़ में वास्तव में इसका उल्लेख किया गया है। इस अन्य फ़ीडबैक आइटम में कनेक्ट से माइग्रेट की गई टिप्पणी शामिल है, और इसकी स्थिति 'अनियोजित' है।
कनेक्ट बग रिपोर्ट में से एक, जो पहले मौजूद थी, ने दो समाधान दिए:
रिमोट सर्वर पर एक्सएमएल कॉलम के बिना [ए] व्यू बनाएं और उससे पूछें।
आपके उदाहरण में, इसमें
MyDatabase
. में एक दृश्य जोड़ना शामिल होगा जो इस तरह दिखता है:CREATE VIEW V_T_B AS SELECT Id FROM T_B;
फिर आप
Id
. प्राप्त करने के लिए लिंक के माध्यम से इस दृश्य को क्वेरी कर सकते हैं जानकारी। ध्यान दें कि कुछ ऐसा हैSELECT Id FROM ( SELECT Id FROM T_B ) T_B;
नहीं काम।
फ़ॉर्म में पास-थ्रू क्वेरी का उपयोग करें
SELECT * from OPENQUERY (... )
इस पद्धति का लाभ यह है कि स्रोत डेटाबेस में किसी भी परिवर्तन की आवश्यकता नहीं है; नकारात्मक पक्ष यह है कि स्थानीय और लिंक किए गए डेटा दोनों के लिए मानक चार-भाग नामकरण का उपयोग करना अब संभव नहीं है। क्वेरी इस तरह दिखेगी
SELECT Id FROM OPENQUERY(DATA02, 'SELECT Id FROM T_B') T_B;
ध्यान दें कि यदि आप वास्तव में करते हैं एक्सएमएल डेटा चाहते हैं, यह विधि (गैर-एक्सएमएल डेटाटाइप को और उससे कास्टिंग के साथ) आवश्यक होगी :
SELECT Id, CAST(Stuff AS XML) Stuff FROM OPENQUERY(DATA02, 'SELECT Id, CAST(Stuff AS nvarchar(max)) Stuff FROM T_B') T_B;
ध्यान दें कि बग को पहली बार SQL सर्वर 2005 में रिपोर्ट किया गया था, और SQL सर्वर 2017 में ठीक नहीं किया गया है। मैं अभी तक SQL सर्वर 2019 की जांच करने में सक्षम नहीं हूं।