回答

10

有你在objec錯過了什麼名字。它應該總是像Database.User.ObjectName(例如Northwind.dbo.Customers)

通過鏈接服務器運行查詢時,請提供完整的對象名稱。執行對鏈接服務器時

查詢存儲過程可能是這樣的:

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

檢查與像SET FMTONLY OFF執行存儲過程時的選項。

請點擊此鏈接爲OPENQUERY:http://msdn.microsoft.com/en-us/library/ms188427.aspx

+0

最近在嘗試幫助其他人使用鏈接服務器時遇到了這個問題。希望錯誤消息更具描述性。 – 2013-03-08 04:15:39

1

我有同樣的錯誤嘗試通過鏈接服務器來查詢。但是,我正在查詢目標服務器上的一個視圖,而不是存儲過程。

目標服務器的創建視圖這樣的:

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

要解決這個問題,我做了一個ALTER視圖,幷包裹在一個子查詢這兩個UNION語句,就像這樣:

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」每1L服務器collegato 「RIBOWEB10 \ SQLEXPRESS 「ha restituito il messaggio」延遲準備 無法完成。「。

我認爲SQL Server試圖動態解析與真實對象直接不匹配的名稱,但不確定。

很容易的,我希望這有助於:)

1

即使你已經在你的查詢錯誤命名列,你會看到這個錯誤。例如:

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

和列名是column,不colunm

底線是檢查實際查詢發送到遠程服務器的正確性第一,然後將其包裝在openquery並重新測試。