प्रारूप शायद होना चाहिए:
<server>.<database>.<schema>.<table>
उदाहरण के लिए: DatabaseServer1.db1.dbo.table1
अद्यतन : मुझे पता है कि यह एक पुराना प्रश्न है और मेरे पास जो उत्तर है वह सही है; हालाँकि, मुझे लगता है कि किसी और को इस पर ठोकर खाने के लिए कुछ चीजें पता होनी चाहिए।
अर्थात्, जब लिंक की गई स्थिति में किसी लिंक किए गए सर्वर के विरुद्ध क्वेरी करने के लिए, लिंक किए गए सर्वर से ENTIRE तालिका संभवत: उस सर्वर से डाउनलोड की जाएगी जिसे क्वेरी ऑपरेशन में शामिल होने के लिए निष्पादित कर रही है। ओपी के मामले में, दोनों table1
से DB1
और table1
से DB2
सर्वर क्वेरी, शायद नामित क्रियान्वित करने के लिए उनकी सम्पूर्णता में स्थानांतरित कर दिया जाएगा DB3
।
यदि आपके पास बड़ी टेबल हैं, तो इसके परिणामस्वरूप एक ऑपरेशन हो सकता है जो निष्पादित होने में लंबा समय लेता है। आखिरकार यह अब नेटवर्क ट्रैफिक गति से विवश है जो कि मेमोरी या डिस्क ट्रांसफर स्पीड की तुलना में कम परिमाण का आदेश है।
यदि संभव हो, तो एक स्थानीय तालिका में शामिल किए बिना, एक अस्थायी तालिका में आवश्यक डेटा खींचने के लिए, दूरस्थ सर्वर के खिलाफ एक ही क्वेरी करें। फिर उस से क्वेरी करें।
यदि यह संभव नहीं है, तो आपको उन विभिन्न चीजों पर ध्यान देने की आवश्यकता है जो SQL सर्वर को स्थानीय रूप से संपूर्ण तालिका को लोड करने का कारण बनेगी। उदाहरण के लिए GETDATE()
या कुछ निश्चित योगों का उपयोग करना । अन्य प्रदर्शन हत्यारों में उचित अधिकार नहीं देना शामिल है।
अधिक जानकारी के लिए http://thomaslarock.com/2013/05/top-3-performance-killers-for-linked-server-queries/ देखें ।