8

मैं अपने स्थानीय Sql सर्वर से लिंक किया हुआ सर्वर, बनायाजब जुड़ा हुआ सर्वर के रूप में स्थानीय डेटाबेस का उपयोग कर त्रुटि "तैयार स्थगित पूरी नहीं हो सकी"

http://sqlserverplanet.com/dba/local-linked-server

के रूप में दी लेकिन जब मैं निष्पादित करने के लिए एक संग्रहीत की कोशिश लिंक्ड सर्वर में प्रक्रिया, फेंक देता है:

Deferred prepare could not be completed 

त्रुटि और अमान्य ऑब्जेक्ट नाम 'तालिका नाम'

+0

मैं बस इसमें भाग गया और यह पता चला कि तालिका का नाम ओपनक्वायरी – gordy

उत्तर

10

आप अपने ओर्ब में कुछ छूट गया है टी नाम यह हमेशा डेटाबेस.User.ObjectName (उदाहरण के लिए Northwind.dbo.Customers)

लिंक किए गए सर्वर के माध्यम से क्वेरी चलाते समय पूर्ण ऑब्जेक्ट नाम दें। संग्रहित प्रक्रिया के लिए

क्वेरी इस तरह हो सकता है जब लिंक्ड सर्वर पर क्रियान्वित: SET FMTONLY बंद जैसे विकल्प जब संग्रहित प्रक्रिया को क्रियान्वित करने के साथ

Select * 
From OPENQUERY([COM2\SQLEXPRESS], 'Exec Northwind.dbo.CustOrderHist ''CUST1''') as TB1 

चेक।

OPENQUERY के लिए इस लिंक का पालन करें: http://msdn.microsoft.com/en-us/library/ms188427.aspx

+0

में केस संवेदनशील था, बस हाल ही में इस तरह से भाग गया जब किसी लिंक किए गए सर्वर से किसी और की मदद करने की कोशिश की गई। इच्छा संदेश त्रुटि अधिक वर्णनात्मक था। –

1

मैं एक ही किसी लिंक किए गए सर्वर के माध्यम से क्वेरी करने के लिए कोशिश कर त्रुटि थी। हालांकि, मैं लक्ष्य सर्वर पर एक दृश्य पूछताछ कर रहा था, संग्रहित प्रक्रिया नहीं।

लक्ष्य सर्वर का दृष्टिकोण इस तरह बनाया गया था:

CREATE VIEW vABC AS 
    SELECT ... FROM Table1 
    UNION ALL 
    SELECT ... FROM Table2 

समस्या को ठीक करने के लिए, मैं एक बदलने दृश्य किया था, और एक सबक्वेरी में दो यूनिअन बयान लिपटे, इस तरह:

CREATE VIEW vABC AS 
    SELECT * FROM (
     SELECT ... FROM Table1 
     UNION ALL 
     SELECT ... FROM Table2 
    ) T 

मूल दृश्य के साथ कुछ मेटाडेटा समस्या होना चाहिए।

उम्मीद है कि यह आपकी मदद करता है!

1

मेरे लिए एक ही समस्या: मैंने इसे "लक्ष्य" ऑब्जेक्ट को ठीक करने का संकल्प किया, जिसे सही ढंग से नामित नहीं किया गया था।

मेरे मामले में मैं [testDb].[Business.Customer] मेज लिए खोज रहा था, लेकिन सही नाम [testDb].[Business].[Customer] था ... वही त्रुटि तुम्हारा के रूप में:

इल प्रदाता OLE DB "SQLNCLI10" इल प्रति सर्वर "RIBOWEB10 \ SQLEXPRESS collegato "ha restituito il messaggio" डिफर्ड तैयार पूरा नहीं हो सका। "

मुझे लगता है कि SQL सर्वर उन नामों को गतिशील रूप से हल करने का प्रयास करता है जो वास्तविक वस्तुओं से सीधे मेल नहीं खाते हैं, लेकिन इसके बारे में सुनिश्चित नहीं हैं।

काफी आसान है, मुझे आशा है कि इस मदद करता है :)

1

यहां तक ​​कि अगर आप अपने प्रश्न में गलत तरीके से एक कॉलम नामित किया है, आपको यह त्रुटि दिखाई जा रहे हैं।उदाहरण:

select * 
from openquery(
    lnksrv 
    ,'select top 10 * from db.schema.table where colunm = 10' 
) 

और स्तंभ नाम column, नहीं colunm है।

नीचे की रेखा वास्तविकता को पहले सहीता के लिए दूरस्थ सर्वर पर भेजने के लिए वास्तविक क्वेरी की जांच कर रही है, फिर इसे openquery में लपेटें और पुनः परीक्षण करें।

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

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