2009-06-10 17 views
0

我通常不使用链接服务器,所以我不确定我在这里做错了什么。T-SQL 2000:四部分表名

这样的查询将努力链接FoxPro服务器从SQL 2000:

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.]. 

我意识到它应该是ServerAlia s.Category.Schema.TableName,但是如果我在链接服务器上运行sp_ tables _ex,对于所有表的类别,我只是将网络路径指向数据文件所在的位置,并且架构为空。

此服务器安装不正确吗?或者是我试图做不到的事情?

回答

1

MSDN

Always use fully qualified names when working with objects on linked servers. There is no support for implicit resolution to the dbo owner name for tables in linked servers

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

0

我认为你需要明确有关查询的链接服务器的一部分资源,比如:

EXEC SomeLinkedServer.Database.dbo.SomeStoredProc 

换句话说只是点缀出来在这种情况下不工作,你必须更加详细一些。

0

它实际上是:

ServerAlias.Catalog.Schema.LinkedTable

目录是,你的链接服务器上查询数据库和目录是远程表的类别。因此,一个有效的四部分名称会看上去像个这个

ServerAlias.AdventureWorks.HumanResources.Employee

ServerAlias.MyDB.dbo.MyTable

+0

有没有一种方法可以确定这两个中间件是什么? sp_linkedservers将'SRV_CAT'显示为空,并且sp_tables_ex将'TABLE_SCHEM'也为NULL – John 2009-06-10 13:55:58