SQL2005链接服务器的问题.

时间:2021-02-23 18:01:08
在odbc上作了一个系统DSN(pgsql)连接到PostgreSQL.(测试可以使用)
在SQL2005Express上作了一个链接服务器通过odbc连接到PostgreSQL.
EXEC sp_addlinkedserver @server = 'test', @srvproduct='pgsql', @provider = 'MSDASQL', @datasrc = 'pgsql'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname='test',@useself='false',@locallogin='sa',@rmtuser='pgsqluid',@rmtpassword='pgsqlpwd'
go

创建好后.
select * FROM teste...table_name
上面这个sql语句不可以使用.提示错误为:
链接服务器 "test" 的 OLE DB 访问接口 "MSDASQL" 不包含表 "table_name"。该表不存在,或者当前用户没有访问该表的权限。

但是用下面的sql语句就可以执行:
select * FROM OPENQUERY(postgres_UNI, 'SELECT * FROM table_name')

自己不明白!
希望大家多多帮助

5 个解决方案

#1


你把完整的执行语句和错误信息发来看看,刚好这段时间我研究了一下链接服务器

#2


正确的语句是这样的:
select * FROM LinkServerName.DataBaseName.dbo.table_name

#3


上面的就是完整的语句.table_name换成具体的表就一样了!

#4


to:skxcall() 
你的方法是不正确的.
提示错误为:
对链接服务器 "teste" 的 OLE DB 访问接口 "MSDASQL" 的架构或目录的使用无效。提供了由四部分构成的名称,但访问接口并未显示必要的接口来使用目录或架构。

#5


但是用下面的sql语句就可以执行:
select * FROM OPENQUERY(postgres_UNI, 'SELECT * FROM table_name')
这句话修改一下:应该是
select * FROM OPENQUERY(test, 'SELECT * FROM table_name')
为了测试,我创建了太多的链接.不好意思.

#1


你把完整的执行语句和错误信息发来看看,刚好这段时间我研究了一下链接服务器

#2


正确的语句是这样的:
select * FROM LinkServerName.DataBaseName.dbo.table_name

#3


上面的就是完整的语句.table_name换成具体的表就一样了!

#4


to:skxcall() 
你的方法是不正确的.
提示错误为:
对链接服务器 "teste" 的 OLE DB 访问接口 "MSDASQL" 的架构或目录的使用无效。提供了由四部分构成的名称,但访问接口并未显示必要的接口来使用目录或架构。

#5


但是用下面的sql语句就可以执行:
select * FROM OPENQUERY(postgres_UNI, 'SELECT * FROM table_name')
这句话修改一下:应该是
select * FROM OPENQUERY(test, 'SELECT * FROM table_name')
为了测试,我创建了太多的链接.不好意思.