0

我通常不使用链接服务器,所以我不确定我在这里做错了什么。

像这样的查询将适用于 sql 2000 中的链接 foxpro 服务器:

EXEC('Select * from openquery(linkedServer, ''select * from linkedTable'')')

但是,通过在互联网上的研究,这样的事情也应该有效:

Select * from linkedserver...linkedtable

但我收到此错误:

Server: Msg 7313, Level 16, State 1, Line 1
Invalid schema or catalog specified for provider 'MSDASQL'.
OLE DB error trace [Non-interface error:  Invalid schema or catalog specified for the provider.].

我意识到它应该是 ServerAlias.Category.Schema.TableName,但是如果我在链接服务器上运行 sp_tables_ex,对于所有表的类别,我只需获取数据文件所在的网络路径,并且架构为空.

这个服务器设置不正确吗?还是我试图做的事情是不可能的?

4

3 回答 3

1

来自MSDN

在链接服务器上处理对象时,始终使用完全限定名称。不支持对链接服务器中的表的 dbo 所有者名称进行隐式解析

您不能依赖链接服务器的“..”符号的隐式模式名称解析。对于 FoxPro“服务器”,您将不得不使用数据库和架构,因为它们映射到您使用的驱动程序中的 FoxPro 对应项(我认为它们映射到文件夹和文件名,但我没有使用 ISAM 文件超过 10 年的司机)。

于 2009-06-10T14:01:46.080 回答
0

我认为您需要明确查询链接服务器部分中的资源,例如:

EXEC SomeLinkedServer.Database.dbo.SomeStoredProc

换句话说,在这种情况下,仅仅将它们点出来是行不通的,你必须更具体。

于 2009-06-10T13:43:09.287 回答
0

其实是:

ServerAlias.Catalog.Schema.LinkedTable

目录是您在链接服务器上查询的数据库,目录是远程表的目录。所以一个有效的四部分名称看起来像这样

ServerAlias.AdventureWorks.HumanResources.Employee

或者

ServerAlias.MyDB.dbo.MyTable

于 2009-06-10T13:44:21.077 回答