विभिन्न सर्वरों पर दो अलग-अलग डेटाबेस में दो टेबल हैं, मुझे कुछ प्रश्न पूछने के लिए उनसे जुड़ने की आवश्यकता है। आपके पास कौन से विकल्प हैं? मुझे क्या करना चाहिए?विभिन्न सर्वरों पर दो डेटाबेस में दो टेबलों में शामिल होने से डेटा क्वेरी करना
उत्तर
आपको सर्वर लिंक बनाने के लिए sp_addlinkedserver
का उपयोग करने की आवश्यकता होगी। उपयोग के लिए reference documentation देखें। एक बार सर्वर लिंक स्थापित हो जाने के बाद, आप सामान्य रूप से क्वेरी का निर्माण करेंगे, बस अन्य सर्वर के साथ डेटाबेस नाम उपसर्ग कर रहे हैं। अर्थात:
-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID
लिंक को स्थापित है, तो आप भी OPENQUERY
का उपयोग दूरस्थ सर्वर पर किसी SQL बयान निष्पादित करने के लिए कर सकते हैं और केवल डेटा वापस आपको ट्रांसफर। यह थोड़ा तेज़ हो सकता है, और यह दूरस्थ सर्वर को आपकी क्वेरी को अनुकूलित करने देगा। यदि आप ऊपर दिए गए उदाहरण में DB1
पर डेटा को अस्थायी (या इन-मेमोरी) तालिका में कैश करते हैं, तो आप इसे मानक तालिका में शामिल होने की तरह पूछने में सक्षम होंगे। उदाहरण के लिए:
-- Fetch data from the other database server
SELECT *
INTO #myTempTable
FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')
-- Now I can join my temp table to see the data
SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID
कुछ और उदाहरण देखने के लिए documentation for OPENQUERY देखें। उपरोक्त उदाहरण बहुत बढ़िया है। मैं निश्चित रूप से इस विशिष्ट उदाहरण में पहली विधि का उपयोग करता हूं, लेकिन OPENQUERY
का उपयोग करने वाला दूसरा विकल्प कुछ समय और प्रदर्शन को बचा सकता है यदि आप कुछ डेटा फ़िल्टर करने के लिए क्वेरी का उपयोग करते हैं।
यदि आपके डीबीए द्वारा एक लिंक किए गए सर्वर की अनुमति नहीं है, तो आप OPENROWSET का उपयोग कर सकते हैं। पुस्तकें ऑनलाइन आपको आवश्यक वाक्यविन्यास प्रदान करेगी।
डीबीएमएस द्वारा दो टेबलों में से एक में सबसे अच्छा किया जाता है, इसलिए इसे इस तरह से किया जाना चाहिए। आप डेटाबेस में से किसी एक पर छोटी तालिका या इसके सबसेट को मिरर कर सकते हैं और फिर उनसे जुड़ सकते हैं। कोई भी ईटीएल सर्वर पर सूचनात्मक जैसे ऐसा करने का लुत्फ उठा सकता है लेकिन मुझे लगता है कि टेबल बहुत बड़े होने पर सलाह नहीं दी जाती है।
एक व्यावहारिक उद्यम परिप्रेक्ष्य से, सबसे अच्छा अभ्यास अपने डेटाबेस में डेटाबेस तालिका की प्रतिबिंबित प्रतिलिपि बनाना है, और उसके बाद केवल एक कार्य/proc को डेल्टा के हर घंटे अपडेट करें।
इस प्रयास करें:
SELECT tab2.column_name
FROM [DB1.mdf].[dbo].[table_name_1] tab1 INNER JOIN [DB2.mdf].[dbo].[table_name_2] tab2
ON tab1.col_name = tab2.col_name
मैं इस कोड के नीचे की कोशिश की और यह काम कर रहा ठीक
SELECT TimeTrackEmployee.StaffID
FROM dbo.tblGBSTimeCard AS GBSTimeCard INNER JOIN
TimeTrak.dbo.tblEmployee AS TimeTrackEmployee ON GBSTimeCard.[Employee Number] = TimeTrackEmployee.GBSStaffID
तो डेटाबेस लिंक विकल्प उपलब्ध नहीं है, एक और मार्ग आप ले सकता है के माध्यम से टेबल से जोड़ने के लिए है ओडीबीसी जैसे एमएस एक्सेस या क्रिस्टल रिपोर्ट्स और वहां शामिल होने के लिए।
आप निम्न की कोशिश कर सकते:
select customer1.Id,customer1.Name,customer1.city,CustAdd.phone,CustAdd.Country
from customer1
inner join [EBST08].[Test].[dbo].[customerAddress] CustAdd
on customer1.Id=CustAdd.CustId
हो सकता है कि हार्ड-कोडेड डेटाबेस नाम सबसे अच्छा तरीका हमेशा एक SQL- क्वेरी के भीतर नहीं है। इस प्रकार, समानार्थी जोड़ना एक बेहतर दृष्टिकोण होगा। यह हमेशा ऐसा नहीं होता है कि कई स्टेजिंग वातावरण में डेटाबेस का एक ही नाम होता है। वे प्रोडी, यूएटी, एसआईटी, क्यूए और इतने आगे पोस्टफिक्सेस द्वारा हो सकते हैं। इसलिए हार्ड-कोड किए गए प्रश्नों से अवगत रहें और उन्हें अधिक गतिशील बनाएं।
दृष्टिकोण # 1: उसी सर्वर पर डेटाबेस के बीच तालिकाओं को जोड़ने के लिए समानार्थी का प्रयोग करें।
दृष्टिकोण # 2: प्रत्येक डेटाबेस से डेटा एकत्रित करें और अपने कोड में शामिल हों। आपका डेटाबेस कनेक्शन स्ट्रिंग्स आपके ऐप-सर्वर कॉन्फ़िगरेशन का हिस्सा डेटाबेस या कॉन्फ़िगरेशन फ़ाइल के माध्यम से हो सकता है।
इस के लिए बस क्वेरी
select a.Id,a.type,b.Name,b.City from DatabaseName.dbo.TableName a left join DatabaseName.dbo.TableName b on a.Id=b.Id
मैं databasename कहाँ लिखा नीचे का पालन करें, आप डेटाबेस के नाम को परिभाषित करने के लिए है। यदि आप एक ही डेटाबेस में हैं तो आपको डेटाबेस नाम को परिभाषित करने की आवश्यकता नहीं है, लेकिन यदि आप अन्य डेटाबेस में हैं तो आपको डेटाबेस नाम का पथ के रूप में उल्लेख करना होगा या यह आपको त्रुटि दिखाएगा। आशा है कि मैंने आपका काम आसान बना दिया है
- 1. दो टेबलों से डेटा एक दृश्य में
- 2. MySQL दो टेबलों में शामिल होने का दृश्य बनाएं
- 3. एक क्वेरी में दो टेबलों से पंक्तियों को हटाएं
- 4. विभिन्न प्रकार के दो सूचियों में शामिल होने और तारीख
- 5. दो टेबलों से कई कॉलमों का योग प्राप्त करना
- 6. MySQL फिक्सिंग ऑटोइनक्रिकमेंट अंतराल दो टेबलों में
- 7. दो तालिकाओं में शामिल होने के साथ अद्यतन क्वेरी
- 8. एसक्यूएल - दो टेबलों में शामिल होना और वस्तुओं की गिनती
- 9. विभिन्न डेटाबेस से तालिकाओं में शामिल होने का प्रदर्शन प्रभाव
- 10. कर्सरलोडर - दो टेबल क्वेरी में शामिल हों?
- 11. दो numpy matrices में शामिल होने
- 12. विभिन्न डेटा संदर्भ से तालिकाओं में कैसे शामिल हों?
- 13. दो अलग-अलग टेबलों पर टीडी ऊंचाई
- 14. MySQL - दो मौजूदा टेबलों की प्राथमिक कुंजी पर शामिल होने वाली एक नई तालिका कैसे बनाएं
- 15. SQL सर्वर पर विभिन्न कॉलेशन के साथ दो डेटाबेस में शामिल होना और त्रुटि
- 16. एसक्यूएल क्वेरी दो कनेक्शनों में?
- 17. एसक्यूएल एकाधिक COUNT() दो टेबलों से, एक बाएं जॉइन
- 18. दो अलग डेटाबेस से परिणाम में शामिल हों
- 19. दो एसक्यूएल में शामिल होने के बीच क्या अंतर है?
- 20. Django: विभिन्न डेटाबेस से डेटा प्राप्त करना
- 21. दो टेबलों के लिए समान इंडेक्स नाम
- 22. Django मॉडल और दो या दो से अधिक तालिकाओं में शामिल होने के साथ चयन करें?
- 23. विभिन्न शेयरपॉइंट सर्वरों पर InfoPath फॉर्मों को तैनात करना
- 24. कोल्डफ्यूजन में दो Arrays में शामिल हों
- 25. LINQ और साथ दो तालिकाओं में शामिल होने या खंड
- 26. दो चयन विवरण में शामिल हों
- 27. कई विदेशी कुंजी के साथ दो तालिकाओं में शामिल होने
- 28. एसक्यूएल: दो टेबलों से कॉलम की तरह चुनें
- 29. mysql 2 डेटाबेस से दो टेबल सिंक करें
- 30. दो टेबलों से अधिकतम, न्यूनतम मान का चयन करें
क्या यह php-mysql के साथ संभव है .. अगर हां तो क्या आप कृपया मुझे सुझाव दे सकते हैं कि मैं उस विकल्प के साथ कैसे बढ़ सकता हूं? – Jhanvi
मुझे नहीं पता कि MySQL लिंक किए गए सर्वर का समर्थन करता है या नहीं। यह उत्तर माइक्रोसॉफ्ट एसक्यूएल सर्वर के लिए विशिष्ट है। –
यदि कोई पोस्टग्रेएसक्यूएल उत्तर की तलाश में है, तो इसे आजमाएं: http://www.postgresql.org/docs/9.4/static/postgres-fdw.html – PJSCopeland