【问题标题】:Access linked server from linked server directly直接从链接服务器访问链接服务器
【发布时间】:2017-05-12 17:33:54
【问题描述】:

我有两个 SQL Server 实例:

  • SQLSERVER64
  • SQLSERVER32

SQLSERVER32 中,我有一个链接到名为ParadoxDBLinkedServer 的Paradox 数据库的服务器。

要访问服务器中的一些 Paradox 表,我只需执行以下语句:

SELECT * 
FROM [ParadoxDBLinkedServer]...Clients

然后,我需要从SQLSERVER64 实例访问这些对象。为此,我在此实例中创建了一个名为 [.\SQLSERVER32] 的链接服务器,指向 SQLSERVER32

我现在要做的是直接从SQLSERVER64 实例访问ParadoxDBLinkedServer 对象。我的意思是,从另一个链接服务器访问一个链接服务器。

我尝试运行的查询如下:

SELECT * 
FROM [.\SQLSERVER32].[ParadoxDBLinkedServer ]...Clients

但我收到此错误:

数字名称“.\SQLSERVER32.ParadoxDBLinkedServer ...Clients”包含的前缀数量超过了最大数量。最大值为 3。

有没有办法执行这样的访问?我在这里错过了什么?

我试图避免在SQLSERVER32 实例中为ParadoxDBLinkedServer 的每个表创建一个视图,以减少开销。

【问题讨论】:

  • 当您的四部分命名约定中有多余的对象时,您会收到此错误:[.\SQLSERVER32].[ParadoxDBLinkedServer ].[Schema_Name].[Table_Name] try this..
  • @Darshan_Viswanath_BI,缺少架构。实际上它在默认模式中。但尝试 [.\SQLSERVER32 ].[ParadoxDBLinkedServer].[default].Clients 我得到:链接服务器“%ls”的 OLE DB 提供程序“%ls”不包含表“%ls”。该表不存在或当前用户对该表没有权限。
  • 你能登录两台服务器并做一个select * from [Database].[dbo].[Client] 吗?以 [ParadoxDBLinkedServer ] 为前缀应该是您的解决方案。如果该表不存在或您没有必要的权限,您将知道它。

标签: sql-server sql-server-2014 linked-server paradox


【解决方案1】:

select * from openquery(Linkedservername,'select * from tablename')

【讨论】:

    【解决方案2】:

    这已经很晚了,但希望可以对稍后来此帖子的其他人有所帮助。如果你可以使用openquery,那么这样的东西应该可以工作:

    SELECT * FROM OPENQUERY([.\SQLSERVER32], 'SELECT * FROM   OPENQUERY([ParadoxDBLinkedServer ],''SELECT * FROM Clients'')' )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 2012-07-21
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多