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

时间:2019-05-03 21:02:58

标签: sql-server ssms

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

我有一个链接服务器设置。 该查询在SSMS中有效,我可以返回行。

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

但是尝试在带有OPENQUERY的SSMS中执行相同的操作

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

消息如下:

  

已为链接服务器“ SERVER”返回OLE DB提供程序“ SQLNCLI11”   消息“延迟的准备工作无法完成。”。讯息8180,级别   16,州1,第1行的声明无法准备。讯息7202,   级别11,状态2,行1在以下位置找不到服务器“ SERVER”   sys.servers。验证是否指定了正确的服务器名称。如果   必要时,执行存储过程sp_addlinkedserver以添加   服务器到sys.servers。

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

2 个答案:

答案 0 :(得分:1)

因为使用OPENQUERY会发送要在远程服务器上运行的查询。远程服务器抛出该错误。在查询中取出链接服务器的名称。遵循这些原则。

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

答案 1 :(得分:0)

此语句可与其他服务器一起使用,可以,请尝试以下操作:

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

完成。 :)