方式B: Add Host Name 利用域来唯一识别数据库以及数据库表对象. 来实现跨服务器访问. 这种方式一般比较简单 主要适用于对数据需求临时性查询是使用偏多. 不适合做大批量数据提取. 有性能瓶颈. <2>分布式查询实现在进行实现分布式查询之前.本次测试Demo对应的SQL版本:
确定SQLServer版本后如下会演示两种方式来实现分布式查询,并对Distributed Query中详细细节进行说明. <2.1>链接服务器查询 链接服务器配置使 SQL Server 可以对远程服务器上的 OLE DB 数据源执行命令。链接服务器具有以下优点:
下图显示了链接服务器配置的基础:
现在利用链接服务器方式实现数据访问远程服务器数据库CustomerDB中Users表数据先本地添加LinkServer: 1: -- 建立连接服务器 第一步建立连接 IP方式来控制 2:
3: EXEC sp_addlinkedserver '192.168.10.104' , 'SQL Server' 4:
5: -- 查看链接服务器信息 [测试连接成功] 6:
7: select name , product, provider, data_source, query_timeout, lazy_schema_validation, is_remote_login_enabled, is_rpc_out_enabled 8: from sys.servers 9: where is_linked= 1
如上市建立连接服务器最简单方式.建立链接服务器过程其实调用了系统存储过程Sp_addlinkedserver. 第一个参数为Name 其实用来唯一标识链接服务器. 当然可以其他任何有意义字符串来定义,但我个人建议使用远程服务器的IP来标识.第二个参数是要添加为链接服务器的 OLE DB 数据源的产品名称. 默认为Null,如果指定”SQlServer“则无需指定其他参数. 如果你的本地装有多个数据库实例. 第一个种方式就不适用.这是就需要用SQl2005架构来唯一标识: 1: -- 含架构名 查询数据两种模式 3: select top 10 * from [192.168.10.104]. wl . 架构名 . 表名 5: -- 架构名 [采用默认架构名 ] 7: select top 10 * from [192.168.10.104]. CustomerDB . dbo. Users 对于Sql2005架构这个概念很多人比较陌生: 架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。 例如,为了避免名称冲突,同一架构中不能有两个同名的表。两个表只有在位于不同的架构中时才可以同名 例如本次Demo 在CustomerDB后对应DBO既是默认的架构名. 创建后.如果需要修改连接服务器属性可以通过sp_serveroption系统Proc来设置: 1: -- 配置链接服务器属性 sp_serveroption为远程服务器和链接服务器设置服务器选项 2: -- 语法 sp_serveroption [@server =] 'server',[@optname =] 'option_name',[@optvalue =] 'option_value' 4: exec sp_serveroption '192.168.10.104','name','192.168.10.104' 6: -- 查看连接服务器 7: select * from sys.servers 建立后我就可以直接来查询远程服务器上数据: 1: -- 查询远程服务器数据 3: select * from [192.168.10.104].CustomerDB.dbo.Users --[成功] 5: -- sp_droplinkedsrvlogin 删除链接服务器登录名映射 [删除登录映射] 6: -- 如果为 NULL,那么将会删除由 sp_addlinkedserver 创建的默认映射 [第二个参数] 8: exec sp_droplinkedsrvlogin '192.168.10.104' ,NULL 10: -- 删除链接服务器属性 [删除服务器] 12: exec sp_dropserver 'mytest' --[删除成功 同时也删除了Sys_Server信息] 14: -- 查看服务器详细信息 15: EXEC sp_helpserver 查询结果:
测试查询成功.远程数据成功获取. 当测试完成后我们不需要这个连接服务器是即可利用SP_DroplinkServer删除掉. 对应参数为创建时Name唯一标识. 通过Sp_helpserver来查看连接服务器详细信息. 注意如上创建连接服务器时设置srvproduct参数即OLED数据源名称时我们采用了SQlServer方式. 下面说明这种方式特点.: 这种方式是最为简单直接的一种建立链接服务器方式. 但是存在前提的. 测试发现: 在所有数据库的远程连接 dbo 的方式必须建立在 SA 密码相同的基础上 ,否则容易产生无法连接的情况 Sa用户登录失败. 你也就明白这个SQlServer参数其实就是在本地数据拷贝服务器角色SysAdmin下用户SA.来对服务器进行登录. 如果你的本地Sa密码与远程服务器上密码不一致 则无法正常连接. (责任编辑:admin) |