以下是代码片段:
-- 执行前先删除已经存在数据 Exec sp_droplinkedsrvlogin [192.168.10.76],Null Exec sp_dropserver 'demodb' -- 创建服务器连接 EXEC sp_addlinkedserver @server='demodb',-- 被访问的服务器别名 @srvproduct='', @provider='SQLOLEDB', @datasrc='192.168.10.76' -- 要访问的服务器 EXEC sp_addlinkedsrvlogin 'demodb', -- 被访问的服务器别名 'false', NULL, 'Test', -- 帐号 'RemoteDB' -- 密码
如上我们首先清除已经可能创建服务器数据记录. 然后创建服务器连接.sp_addlinkedSrvlogin系统存储过程用来创建链接服务器上远程登录之间的映射 . 即我们可以详细设置本地与远程服务器详细的映射信息. 例如设置我们特定用户访问的用户名和密码.
查询数据
-- 查询指定用户Test数据 select * from [demodb].CustomerDB.dbo.Users -- [如上测试成功]
查询结果
指定用户Test对CustomerDB访问数据方式测试成功.
当测试完成后我们不需要这个连接服务器是即可利用SP_DroplinkServer删除掉. 对应参数为创建时Name唯一标识. 通过Sp_helpserver来查看连接服务器详细信息.
注意如上创建连接服务器时设置srvproduct参数即OLED数据源名称时我们采用了SQlServer方式.
下面说明这种方式特点.:
这种方式是最为简单直接的一种建立链接服务器方式. 但是存在前提的. 测试发现:
在所有数据库的远程连接 dbo 的方式必须建立在SA 密码相同的基础上 ,否则容易产生无法连接的情况 Sa用户登录失败. 你也就明白这个SQlServer参数其实就是在本地数据拷贝服务器角色SysAdmin下用户SA.来对服务器进行登录. 如果你的本地Sa密码与远程服务器上密码不一致 则无法正常连接.
经过测试还发现一种情况:
利用Windows7访问XP(Sp2)系统时始终提示无法解析或拒绝连接SQL Server2005.这个问题我整了好久后来才到官方链接参数中发现.:如果你的XP系统没有打上SP4的补丁包 这个问题会始终出现. 需要特别注意.
<2.2>直接指定数据源分布式查询
其实相对第一种方式, 直接指定方式在SQL Server架构中 其实跳过本地与远程服务器建立映射关系的这一步. 通过链接关系建立 其实就是建立一种内部映射关系. 如果没有映射关系则 大部分设置需要手动控制.
直接指定数据源方式 需要开启分布式查询的基本权限 来进行查询:
出处:IT专家网
责任编辑:bluehearts
上一页 详解SQL Server分布式查询 [3] 下一页 详解SQL Server分布式查询 [5]
◎进入论坛网络编程版块参加讨论
|