网络编程
位置:首页>> 网络编程>> 数据库>> 详解SQL Server分布式查询(4)

详解SQL Server分布式查询(4)

 来源:Asp之家 发布时间:2010-09-19 09:07:00 

标签:数据库教程,SQLServer,分布式查询

以下是代码片段:

-- 执行前先删除已经存在数据
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架构中 其实跳过本地与远程服务器建立映射关系的这一步。 通过链接关系建立 其实就是建立一种内部映射关系。 如果没有映射关系则 大部分设置需要手动控制。

直接指定数据源方式 需要开启分布式查询的基本权限 来进行查询:



0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com