建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 数据库 > MSSQL Server教程 >

MSSQl分布式查询(2)

时间:2010-09-10 00:37来源: 作者: 点击:
方式B: Add Host Name 利用域来唯一识别数据库以及数据库表对象. 来实现跨服务器访问. 这种方式一般比较简单 主要适用于对数据需求临时性查询是使用偏多. 不适合做大批量数据提取. 有性能瓶颈. 2分布式查询实现 在

方式B: Add Host Name 利用域来唯一识别数据库以及数据库表对象. 来实现跨服务器访问. 这种方式一般比较简单 主要适用于对数据需求临时性查询是使用偏多. 不适合做大批量数据提取. 有性能瓶颈.

<2>分布式查询实现

在进行实现分布式查询之前.本次测试Demo对应的SQL版本:

 2010-09-09_110812

 

 

 

 

 

 

 

确定SQLServer版本后如下会演示两种方式来实现分布式查询,并对Distributed Query中详细细节进行说明.

<2.1>链接服务器查询

链接服务器配置使 SQL Server 可以对远程服务器上的 OLE DB 数据源执行命令。链接服务器具有以下优点:

  1. 访问远程服务器。
  2. 能够对企业内的异类数据源发出分布式查询、更新、命令和事务。
  3. 能够以相似的方式确定不同的数据源

下图显示了链接服务器配置的基础:

 IC99086

 

 

 

 

 

 

 

 

 

 

现在利用链接服务器方式实现数据访问远程服务器数据库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
 
查询结果:
 2010-09-09_120510

 

 

 

 

 

 

测试查询成功.远程数据成功获取.

当测试完成后我们不需要这个连接服务器是即可利用SP_DroplinkServer删除掉. 对应参数为创建时Name唯一标识. 通过Sp_helpserver来查看连接服务器详细信息.

注意如上创建连接服务器时设置srvproduct参数即OLED数据源名称时我们采用了SQlServer方式.

下面说明这种方式特点.:

这种方式是最为简单直接的一种建立链接服务器方式. 但是存在前提的. 测试发现:

在所有数据库的远程连接 dbo 的方式必须建立在 SA 密码相同的基础上 ,否则容易产生无法连接的情况 Sa用户登录失败. 你也就明白这个SQlServer参数其实就是在本地数据拷贝服务器角色SysAdmin下用户SA.来对服务器进行登录. 如果你的本地Sa密码与远程服务器上密码不一致 则无法正常连接.

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片