链接服务器查询有效,但相同的 OPENQUERY 会产生错误“无法在 sys.servers 中找到服务器 'SERVER'

Linked Server Query works, but OPENQUERY of same produces error "Could not find server 'SERVER' in sys.servers

寻找有关如何解决此问题的指示。

我有一个链接服务器设置。 此查询在 SSMS 中有效,我得到了行。

SELECT tbl.[Col1]
      ,tbl.[CoL2]
  FROM [LINKEDSERVER].[CATALOG].[SCHEMA].[TABLENAME] tbl

但尝试在 SSMS 中使用 OPENQUERY 执行相同操作失败

SELECT [Col1]
FROM OPENQUERY([LINKEDSERVER],
'SELECT tbl.[Col1]
      ,tbl.[CoL2]
  FROM [LINKEDSERVER].[CATALOG].[SCHEMA].[TABLENAME] tbl'
) As Whatever

留言如下:

OLE DB provider "SQLNCLI11" for linked server "SERVER" returned message "Deferred prepare could not be completed.". Msg 8180, Level 16, State 1, Line 1 Statement(s) could not be prepared. Msg 7202, Level 11, State 2, Line 1 Could not find server 'SERVER' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.

当我检查select * from sys.servers时,确实出现了服务器名称SERVER 从此处针对其他链接服务器的 OPENQUERY 成功。

这句话在另一台服务器上使用,但是,可以试试这个:

  1. EXEC SP_SERVEROPTION 'SERVER\INSTANCIA' ,'DATA ACCESS',TRUE
  2. SELECT * 来自 OPENQUERY(您的服务器,'SELECT * FROM TABLE')。

完成了。 :)

因为当您使用 OPENQUERY 时,您会将您想要的查询发送到远程服务器上的 运行。错误是由远程服务器抛出的。取出查询中的链接服务器名称。沿着这些路线。

SELECT [Col1]
FROM OPENQUERY([LINKEDSERVER],
'SELECT tbl.[Col1]
      ,tbl.[CoL2]
  FROM [CATALOG].[SCHEMA].[TABLENAME] tbl'
) As Whatever