`

分布式查询资料

    博客分类:
  • Java
阅读更多
1、分布式查询的概念
·链接到外部数据源要做的工作只不过是:配置好链接服务器的名字、以及相应的位置和登录信息,这样 SQL Server 就可以存取链接服务器上的数据了。

·链接是一个单向配置,如果服务器A链接到服务器B,意味着A知道如何登录和访问B。而对于B而言,A只不过是另一个普通用户而已。

·链接服务器可以是 SQL Server 或者任何其他的 OLE DB 和 ODBC 数据源。只要相应的 OLE DB 提供程序或者 ODBC 驱动程序支持,分布式查询可以检索和修改(insert、delete、update)相应数据源中的数据。

·SQL Server 查询可以通过引用预先配置好的链接服务器或直接在查询代码中指定链接的方法来引用外部数据。



2、存取本地 SQL Server 上的数据库
·当你存取同一个服务器上另一个数据库中的数据时,由于处理数据时使用的是同一个 SQL Server 引擎,所以尽管所查询的数据位于本地数据库之外,这样的查询仍然不是真正的分布式查询。

·只要在被引用的表前加上数据库名,就可以存取同一个服务器上的另一个数据库了。

3、链接到外部数据源
·用企业管理器建立链接:服务器 --> 安全性 --> 链接服务器 --> 右键“新建”,链接实际上就是定义如何登录到另一个服务器。

·用 T-SQL 创建链接:

系统存储过程 作用 说明
sp_addlinkedserver 建立链接
创建链接服务器要两部分完成,建立链接和登录信息
sp_dropserver 删除链接服务器  
sp_linkedservers 显示链接服务器  
sp_addlinkedsrvlogin 建立登录信息 安全问题被分解为两部分:映射的登录和没有映射的登录
sp_droplinkedsrvlogin 删除登录信息  
sp_serveroption 链接服务器选项  
示例代码 22-1
--建立连接服务器 ms sql版本
exec sp_addlinkedserver
--要创建的链接服务器名称
'link_mssql',
--产品名称ms sql
'ms',
--ole db 字符
'sqloledb',
--数据源,要链接的服务器
'zhou'
go

--创建链接服务器上远程登录之间的映射
exec sp_addlinkedsrvlogin
'link_mssql',
'false',
null,
--远程服务器的登陆用户名
'sa',
--远程服务器的登陆密码
'sa'
go

--查询数据
select * from link_mssql.测试.dbo.学员

exec sp_linkedservers

示例代码 22-2
--建立连接服务器 access版本
exec sp_addlinkedserver
--要创建的链接服务器名称
'link_access',
--产品名称
'access',
--ole db 字符
'microsoft.jet.oledb.4.0',
--数据源
--格式:
-- 盘符:\路径\文件名
-- \\网络名\共享名\文件名 (网络版本)
'D:\wwwroot\asp\user.mdb'
go

--创建链接服务器上远程登录之间的映射
--链接服务器默认设置为用登陆的上下文进行
--现在我们修改为连接链接服务器不需使用任何登录或密码
exec sp_addlinkedsrvlogin
'link_access',
'false'
go


--查询数据
select * from link_access...admin

exec sp_linkedservers



示例代码 22-3
--建立连接服务器 excel版本
exec sp_addlinkedserver
--要创建的链接服务器名称
'link_excel',
--产品名称
'ex',
--ole db 字符
'microsoft.jet.oledb.4.0',
--数据源
--格式:
-- 盘符:\路径\文件名
-- \\网络名\共享名\文件名 (网络版本)
'D:\wwwroot\Excel\book.xls' ,
null,
--ole db 提供程序特定的连接字符串
'excel 5.0'
go

----创建链接服务器上远程登录之间的映射
--链接服务器默认设置为用登陆的上下文进行
--现在我们修改为连接链接服务器不需使用任何登录或密码
exec sp_addlinkedsrvlogin 'link_excel','false'
go


--查询数据
select * from link_excel...sheet1$


exec sp_linkedservers





4、开发分布式查询
·本地 - 分布式查询:是从外部数据源取回数据,然后在本地 SQL Server 上执行查询。由于是在本地 SQL Server 上执行查询,所以它用的是 T-SQL 语法。

·直接传递 - 分布式查询:它在外部数据源上执行查询,并把结果返回给 SQL Server 。使用传递查询的最主要的理由是为了减少服务器(外部数据源)和客户(SQL Server)之间的通信量。要注意,直接传递需要使用外部数据源上查询语法。

建立链接的方式 本地 SQL Server  外部数据源(直接传递)
链接服务器 由四部分构成的名字
由四部分构成的名字
OpenQuery()
在查询中声明链接 OpenDataSource() OpenRowSet()
示例代码 22-4 
--本地 - 分布式查询(链接服务器)
select * from link_mssql.测试.dbo.学员
select * from link_access...admin
select * from link_excel...sheet1$
--本地 - 分布式查询(在查询中声明链接)
select * from OpenDataSource('sqloledb','Data Source=zhou;User ID=sa;Password=sa').测试.dbo.学员
select * from OpenDataSource('microsoft.jet.oledb.4.0','Data Source=D:\wwwroot\asp\user.mdb;User ID=;Password=')...admin
select * from OpenDataSource('microsoft.jet.oledb.4.0','Data Source=D:\wwwroot\Excel\book.xls;User ID=;Password=')...sheet1$

--直接传递 - 分布式查询(链接服务器)
select * from OpenQuery(link_mssql,'select * from zhou.测试.dbo.学员')
select * from OpenQuery(link_access,'select * from admin')
select * from OpenQuery(link_excel,'select * from [sheet1$]')

--直接传递 - 分布式查询(在查询中声明链接)
select * from OpenRowSet('sqloledb','zhou';'sa';'sa','select * from zhou.测试.dbo.学员')
select * from OpenRowSet('microsoft.jet.oledb.4.0','D:\wwwroot\asp\user.mdb';'admin';'','select * from admin')





5、分布式事务
·事务对数据的完整性非常重要。如果在这种逻辑工作单元中包含了对本地 SQL Server 以外的数据的修改,标准的事务处理机制就无法实现事务的原子性。如果事务的执行过程中发生了错误,必须有一种机制可以回滚已完成的那部分操作,否则整个数据库会处于不一致的状态。

·SQL Server 用分布式事务处理协调器(Distributed Transaction Coordinator,DTC)来处理涉及多个服务器的事务的提交与回滚。

·分布式事务处理协调器是与 SQL Server 相互独立的服务。使用 SQL Server 服务管理器可以启动和停止 DTC。一台服务器上只能运行一个DTC实例,无论有多少 SQL Server 实例安装或者运行在这台服务器上。这个服务的执行程序是 msdtc.exe,必须在启动了DTC之后,才能执行分布式事务,否则事务就会失败。

语法 说明
set xact_abort on
begin distributed transaction
...


commit transaction
用来检查DTC服务是否可用的begin distributed transaction 命令不是必须的。因为,系统将会自动地把用begin tran 开始的事务提升为分布式事务,并在执行分布式查询时自动检查DTC是否可以用。但我们推荐使用begin distributed transaction命令,这样就可以在事务开始时检查DTC是否可用。如果DTC不可用,系统就会自动生成8501号错误。
示例代码 22-5 
set xact_abort on
begin distributed transaction
insert into
OpenRowSet('microsoft.jet.oledb.4.0','D:\wwwroot\asp\user.mdb';'admin';'','select username,password from admin')
(username,password) values ('2','henhen')
if @@error<>0
begin
rollback
raiserror('链接服务器 microsoft.jet.oledb.4.0 出错!%i',15,1,@@error)
end
insert into
OpenRowSet('microsoft.jet.oledb.4.0','D:\wwwroot\asp\user.mdb';'admin';'','select [id] from admin')
(id) values ('2')
if @@error<>0
begin
rollback
raiserror('链接服务器 sqloledb 出错!%i',15,1,@@error)
end
commit transaction

这里是网上找的,感觉他这边的sql的效率不高,但作为了解这方面的需要,就留下了。
分享到:
评论

相关推荐

    分布式数据库查询优化

    共7页,以前做课程作业时通过搜集资料、自己整理的,先介绍了分布式查询的背景和查询方法,然后引出了查询优化的目标,最后用大部分的篇幅分布式查询优化的各种方法。

    [详细完整版]分布式数据库.doc

    《分布式数据库》课程标准 (基本职业素质模块...包括分布式数据库设计、分布式查询处理与优化、分布式查询的存取优化、分 布式事务管理、分布式恢复管理、分布式并发控制、数据复制与一致性、P2P数据管理系 统、Web数

    分布式数据库系统-复习.doc

    分片设计 非冗余分配 冗余分配 局部模式的重新构造 分布式查询优化的准则是 。 通信费用和响应时间最短 在分布式系统中,查询代价QC= 。 I/O代价+CPU代价+通信代价 在分布式环境下,查询可分为 、 和 三种类型。 ...

    分布式数据库习题.doc

    局部数据库管理系统位于局部场地上,是为建立和管理局部数据库,提供场地自治能 力,执行局部应用及全局查询的子查询的数据库管理系统。 全局/局部DB 全局数据库(GDB)是指从整个系统角度出发,由全局数据库管理...

    分布式数据库查询优化PPT学习教案.pptx

    分布式数据库查询优化PPT学习教案.pptx

    Oracle 跨库 查询 复制表数据 分布式查询介绍

    主要介绍了Oracle 跨库 查询 复制表数据 分布式查询的相关资料,需要的朋友可以参考下

    分布式数据库设计方案.doc

    1. 大型分布式数据库解决方案 企业数据库的数据量很大时候,即使服务器在没有任何压力的情况下,某些复杂的查询 操作都会非常缓慢,影响最终用户的体验;当数据量很大的时候,对数据库的装载与导 出,备份与恢复,...

    Delphi毕业论文:分布式多层数据库图书管理系统.rar

    Delphi毕业论文:分布式多层数据库图书管理系统,通过开发一个分布式多层数据库图书管理系统,学习用delphi开发分布式多层数据库系统。采用Delphi6.0和MS Server2000等软件为开发工具;通过对计算机硬件和软件解决...

    第3章 分布式数据库中的查询处理和优化.ppt

    第3章 分布式数据库中的查询处理和优化

    基于CORBA的分布式通用数据库查询对象模型的研究.rar

    基于CORBA的分布式通用数据库查询对象模型的研究rar,分布式通用数据库查询对象,CORBA,分布式对象技术,ODBC API数据库访问技术,数据类型鉴别器

    行业资料-交通装置-一种交通路况信息自动采集和查询的分布式系统及方法.zip

    行业资料-交通装置-一种交通路况信息自动采集和查询的分布式系统及方法.zip

    分布式数据库系统综述.docx

    分布式数据库系统综述全文共9页,当前为第1页。分布式数据库系统综述全文共9页,当前为第1页。 分布式数据库系统综述全文共9页,当前为第1页。 分布式数据库系统综述全文共9页,当前为第1页。 分布式数据库系统综述 ...

    分布式计算

    有关分布式计算的理论、技术、方法的课程读书笔记 包含其他网络查询资料

    基于Java+Dubbo设计的分布式智能公交查询系统.zip

    本系统通过运用JAVA语言,使用SSM框架和Dubbo分布式来搭建。将智能公交查询系统信息存入Mysql数据库当中,通过系统来对数据库中的站点信息、公交信息、用户信息、公交信息、用户留言信息及新闻发布信息管理等事务。 ...

    Mysql大型分布式集群的文档资料

    包含mysql的安装,binlog日志详解,开启binlog日志,binlog数据恢复,慢日志查询,表分区,主从复制,主主复制。

    分布式数据库系统的优点.docx

    分布式数据库系统中要注意解决分布式数据库的设计、查询处理和优化、事务管理及并发控制和目录管理等问题。 在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有...

    分布式数据库系统复习材料.doc

    (1)全局外层:全局外模式(2)全局概念层:全 局概念模式、分片模式、分配模式(3)局部概念层:局部概念模式(4)局部内层:局 部内模式 23、分布式数据库管理系统的功能模块: (1)查询处理模块":查询处理模块...

    分布式与集群的区别是什么?

    很多开发者(包括我)都想加入研究云计算这个潮流,在google上通过“云计算”这个关键词来查询资料,查到的都是些概念性或商业性的宣传资料,其实真正需要深入的还是那个早以被人熟知的概念——分布式。分布式可繁也...

    分布式数据库系统复习题.doc

    简述分布式数据库系统中的分布透明性,举例说明分布式数据库简单查询的各级分 布透明性问题。 分布式数据库中的分布透明性即分布独立性,指用户或用户程序使用分布式数据 库如同使用集中式数据库那样,不必关心全局...

Global site tag (gtag.js) - Google Analytics