首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

跨服务器查询解决思路

2012-11-10 
跨服务器查询sql库版本【2005】和【2000】服务器:【用友】和【生产系统】数据库:【UFDATA_808_2012】和【ld】用户名:【s

跨服务器查询
sql库版本【2005】和【2000】
服务器:【用友】和【生产系统】
数据库:【UFDATA_808_2012】和【ld】
用户名:【sa】和【1981】
密码:【pw1】和【pw2】
表:【Inventory】和【cpbm】
关联字段:【Inventory.cInvDefine4】=【cpbm.成品编码】

希望在这样的环境下建立 select * from 用友..,生产系统..查询,这两个服务器在一个局域网里面 ,用查询分析器都可以登录,执行单独数据库的成功。

试验了下面的两方法,没有成功:
方法一:

SQL code
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','用友' exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','pw1' Select * From srv_lnk.用友.dbo.Inventory

以上代码在连接到【用友】的查询分析器里面,成功;到在连接到【生产系统】的查询分析器里面,失败
SQL code
消息 17,级别 16,状态 1,第 1 行[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问。

方法二:
 
SQL code
Select cpbm.成品编码 From OPENDATASOURCE(         'SQLOLEDB',         'Data Source=生产系统;User ID=1981;Password=pw1'         ).ld.dbo.cpbmLeft Join OPENDATASOURCE(         'SQLOLEDB',         'Data Source=用友;User ID=sa;Password=pw2'         ).UFDATA_808_2012.dbo.Inventory On cpbm.成品编码=Inventory.cInvDefine4


提示 找不到表:
SQL code
消息 107,级别 16,状态 3,第 1 行列前缀 'cpbm' 与查询中所用的表名或别名不匹配。消息 17,级别 16,状态 1,第 1 行[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问。


[解决办法]
探讨

引用:

引用:

引用:

单独的使用OPENDATASOURCE 你能连上那个?
用友的还是生产的?
你本机是05还是2000


单独使用OPENDATASOURCE,也是首先要登录对应的数据库查询分析器,然后执行对应的的OPENDATASOURCE,可以成功,交换就不能成功,或放在一个查询分析器里面也不能成功
……

热点排行