将本地数据库用作链接服务器时出现"延迟准备无法完成"错误

Ana*_*d B 21 sql-server stored-procedures linked-server sql-server-2008

我从本地的Sql Server创建了一个链接服务器,如下所示

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

但是,当我尝试在链接服务器中执行存储过程时,它会抛出:

Deferred prepare could not be completed
Run Code Online (Sandbox Code Playgroud)

错误和无效的对象名称'表名'

小智 16

你错过了对象名称中的某些内容吗?它应该总是像Database.User.ObjectName(例如Northwind.dbo.Customers)

通过链接服务器运行查询时提供完整的对象名称.

在链接服务器上执行时,对存储过程的查询可能是这样的:

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

执行存储过程时,请检查SET FMTONLY OFF等选项.

请点击此链接获取OPENQUERY:http://msdn.microsoft.com/en-us/library/ms188427.aspx


aje*_*jeh 6

即使您在查询中错误地命名了列,您也会看到此错误。例:

select *
from openquery(
     lnksrv
    ,'select top 10 * from db.schema.table where colunm = 10'
)
Run Code Online (Sandbox Code Playgroud)

列名column不是colunm

最重要的是先检查要发送到远程服务器的实际查询的正确性,然后将其包装openquery并重新测试。