【发布时间】: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