2009-07-24 12 views
11

मैं वर्तमान में एक तृतीय-पक्ष सॉफ़्टवेयर सूट चला रहा हूं, जो SQL सर्वर का डेटाबेस के रूप में उपयोग करता है। मेरे पास एक अलग स्थान पर चल रहे SQL सर्वर का दूसरा उदाहरण है, और कुछ ऐप्स जिन्हें मैं उस उदाहरण में बना रहा हूं SQL सर्वर को तृतीय-पक्ष सॉफ़्टवेयर में कुछ डेटा तक पहुंचने की आवश्यकता है। इसलिए, मैंने बॉक्स के बीच एक ओडीबीसी कनेक्शन बनाया, और तीसरे पक्ष के SQL सर्वर को SQL सर्वर के मेरे संस्करण पर एक लिंक किए गए सर्वर के रूप में स्थापित किया। एक परीक्षण के रूप में, मैं अपने एसक्यूएल सर्वर से निम्नलिखित बयान की तरह कुछ भाग गया, तृतीय-पक्ष की तालिकाओं में से एक तक पहुँचने:लिंक किए गए SQL सर्वर डेटाबेस "असंगत मेटाडेटा" त्रुटि

OLE DB error trace [Non-interface error: Column 'TableRowVersion' (compile-time 
ordinal 4) of object '"SchemaName"."dbo"."TableName"' was reported to have a 
DBCOLUMNFLAGS_ISROWVER of 0 at compile time and 512 at run time]. 

Msg 7356, Level 16, State 1, Line 1 

OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. Metadata 
information was changed at execution time. 

यह त्रुटि है:

SELECT * FROM LinkedServerName.SchemaName.dbo.TableName 

जो मैं इस त्रुटि प्राप्त करने के लिए किसी अन्य तालिका के लिए मैं एक्सेस करने का प्रयास करता हूं। इस त्रुटि का क्या अर्थ है, और इसके आसपास एक रास्ता है?

उत्तर

27

मैं इस कई बार ऐसा किया है: ट्रेस ध्वज 7300 को चालू करने के लिए निम्न Transact SQL कथन चलाते हैं। मुझे मिला एक कामकाज OPENQUERY का उपयोग करना था।

SELECT * FROM OPENQUERY(LinkedServerName, 'SELECT * FROM DBName.Schema.Table') 

इसके अलावा, चुनें आप ऊपर तैनात एक गलत 4 भाग का नाम है (सिर्फ एक टाइपो हो सकता है लेकिन मुझे यकीन नहीं था)। यह LinkedServerName.DBName.SchemaName.TableName

7
Server: Msg 7356, Level 16, State 1, Line 1 

OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. 
Metadata information was changed at execution time. 

आप लिंक किए गए सर्वर डेटाबेस से डेटा क्वेरी करने के लिए एक चार भाग नाम सिंटैक्स का उपयोग करते हैं, तो आपको यह त्रुटि संदेश प्राप्त हो सकता है। इस समस्या को हल करने के लिए, आप लिंक किए गए सर्वर डेटाबेस से डेटा पूछने के लिए OPENQUERY वाक्यविन्यास का उपयोग कर सकते हैं। इस त्रुटि संदेश के बारे में अधिक विस्तृत जानकारी प्राप्त करने के लिए आप ट्रेस ध्वज 7300 चालू कर सकते हैं।

DBCC TRACEON(7300) 
2

मैं इस के साथ इस हल किया जाना चाहिए कदम

1) चरण 1:

• एसक्यूएल सर्वर प्रबंधन स्टूडियो में लिंक्ड सर्वर और फिर 'नया लिंक्ड सर्वर' खोलें।

• दिखाई देने वाले विज़ार्ड के अंदर - सामान्य टैब का चयन करें।

• "लिंक किए गए सर्वर" फ़ील्ड में उपनाम नाम निर्दिष्ट करें।

• प्रदाता के रूप में SQL मूल क्लाइंट का चयन करें।

• "उत्पाद नाम" फ़ील्ड (वह जादू है) में sql_server जोड़ें।

• "डेटा स्रोत" में - होस्ट किए गए सर्वर के रूप में उपयोग किए जाने वाले होस्ट का नाम निर्दिष्ट करें।

2) चरण 2:

• सुरक्षा टैब में - उचित सुरक्षा विकल्प निर्दिष्ट (जैसे सुरक्षा संदर्भ)

3) चरण 3:

• सर्वर विकल्प टैब में - "डेटा एक्सेस", आरपीसी, "आरपीसी आउट" और "दूरस्थ सहयोग का उपयोग करें" को सही साबित करें।

4) चरण 4:

• का आनंद लें।

http://alexpinsker.blogspot.com.br/2007/08/how-to-give-alias-to-sql-linked-server.html

+0

के बाद से सवाल एक और एमएस एसक्यूएल सर्वर से कनेक्शन के बारे में है और नहीं कुछ अन्य लोगों डीबीएमएस (MySQL, PostgreSQL, ...) इस उत्तर (देशी तरीका अधिक performant है इस मामले के लिए सबसे अधिक मान्य है ओडीबीसी की तुलना में)। लेकिन अगर आपका दूसरा सर्वर एमएस एसक्यूएल सर्वर नहीं है तो यह काम नहीं करेगा – DestyNova

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