- 浏览: 830872 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (363)
- 2010年3月 (3)
- 2010年4月 (3)
- Java (116)
- ExtJs (22)
- EJB3.0 (11)
- JQuery (28)
- SqlServer (5)
- Oracle (17)
- hibernate (21)
- struts2 (14)
- php (10)
- JavaScript (11)
- jbpm (6)
- spring (24)
- lucene (2)
- ibatis (7)
- C# (8)
- mysql (11)
- json (3)
- webservice (3)
- 设计模式 (1)
- jdbc (1)
- servlet (2)
- ice (6)
- 日常软件问题 (2)
- 生活 (2)
- iphone (1)
- rest (3)
- ruby (2)
- linux (13)
- quartz (1)
- poi (1)
- redis (13)
- memcached (4)
- nosql (2)
- tomcat调优 (1)
- 项目管理 (0)
最新评论
-
天使建站:
jquery里和数组相关的操作 附带具体的实例 ...
jquery对象数组 -
Cy0941:
$('#formId').form('submit',...) ...
easyui的form表单提交处理 -
shmily2038:
swifth 写道楼主,,你的命令写错啦,,[root@ser ...
centos直接yum安装nginx -
swifth:
楼主,,你的命令写错啦,,[root@server ~]# y ...
centos直接yum安装nginx -
随遇而安DXX:
...
REST
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的效率不高,但作为了解这方面的需要,就留下了。
·链接到外部数据源要做的工作只不过是:配置好链接服务器的名字、以及相应的位置和登录信息,这样 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的效率不高,但作为了解这方面的需要,就留下了。
发表评论
-
Jackson2.x通用工具类
2014-11-03 11:38 4894import java.io.IOException; i ... -
面试题
2013-02-27 09:04 1705从1加到100(考虑减少循环次数)使用数学公式 首先要知道 ... -
单例延迟实例化
2013-01-23 08:55 13231.如果出于性能的考虑而需要对实例域使用延迟初始化,就使用双 ... -
java中重载与重写的区别
2013-01-21 10:03 922首先我们来讲讲:重载(Overloading) ( ... -
自定义标签
2012-12-15 12:58 994package com.fsti.tag; import ... -
JAXB格式化beanToXml
2012-12-14 15:03 1250context = JAXBContext.n ... -
面向对象的特征有哪些方面?
2012-12-13 09:36 1000计算机软件系统是现实 ... -
java nio缓冲器
2012-12-05 17:03 3598缓冲器仅仅是一个" 多功能 " 的数组。可 ... -
面向对象三大特性一句话概括
2012-12-04 15:58 1549封装可以隐藏实现细节,使得代码模块化; 继承可以扩 ... -
Java序列化高级认识
2012-12-04 09:13 1061将 Java 对象序列化为二进制文件的 Java 序列化技术是 ... -
面向接口编程——提升系统多态性和可扩展性
2012-12-03 14:10 1277接口的本质 接口,在表面上是由几个没有主体代码的方 ... -
面向对象之多态
2012-11-23 19:22 868多态性(polymorphisn)是允许你将父对象设置成为和一 ... -
我对"秒杀"在技术性上的一些看法
2012-11-22 11:31 1007秒杀,是指电子商务 ... -
项目编码
2012-11-16 13:59 1146看两个项目所用的编码是否一样 Java的乱码问题: ... -
SVN错误:Attempted to lock an already-locked dir
2012-11-07 09:08 1023出现这个问题后使用“ ... -
面向对象的三个基本特征
2012-11-04 08:31 1083面向对象的三个基本特征是:封装、继承、多态。 封装 封装最 ... -
预编译防sql注入
2012-11-03 20:23 1968prepareStatement会先初始化SQL,先把这个SQ ... -
Java类与对象的初始化
2012-10-19 09:33 892Java类与对象的初始化 面试的时候,经常会遇到这样的笔试题 ... -
commons bean
2012-10-19 09:15 884这是两个javabean对象 package com.bea ... -
java工具DateUtil
2012-10-12 14:42 1050//一年内的周一 public final class Da ...
相关推荐
现代化商场中分布式查询的优化分析知识点如下: 1. 分布式查询的重要性: 分布式查询在现代化商场的信息化管理中扮演着至关重要的角色。信息化管理是现代商场运营的核心之一,它通过信息化手段提高管理质量和水平,...
本资源“SQL专家门诊源代码--分布式查询.rar”提供了深入理解和实践分布式查询的宝贵资料,尤其对于SQL开发者和数据库管理员来说,这是一个非常实用的学习资源。 分布式查询是指在一个多节点、分布式数据库系统中...
4. **性能差异**:多数据库系统通常涉及不同性能级别的DBMS,因此分布式查询处理技术必须能够灵活地适应这些差异。 #### 三、自治性维度 自治性在多数据库系统中至关重要,主要体现在以下三个方面: 1. **通信自治...
例如,学生需要理解不同类型的分片(水平、垂直、混合),掌握查询处理器的工作原理,学习如何优化分布式查询,以及熟悉各种事务管理和恢复协议,如两段提交协议。 此外,课程还引入了实际案例,如Oracle的分布式...
此外,文章中的“参考文献”和“专业指导”标签暗示了文档可能是面向专业人士的学术论文,目的在于提供相关的研究资料和指导建议,帮助读者在物联网领域的分布式查询处理方面进行深入研究和实践。 在中图分类号方面...
- HBase:基于Hadoop的分布式NoSQL数据库,适用于实时查询大数据。 - Hadoop优化:包括数据倾斜问题的解决、内存和磁盘使用策略的调整等。 六、实战应用 通过实际项目来巩固理论知识,例如建立一个日志分析系统,...
通过JDBC,开发者可以编写SQL语句,执行查询、更新、插入和删除操作,从而确保数据的一致性。 3. **RMI(Remote Method Invocation)**:RMI是Java提供的一种远程对象调用机制,它允许一个Java对象调用位于不同 JVM...
这一讲将深入讨论分布式查询的优化,包括查询计划的选择、代价估算和查询执行的并行化。还会讲解如何处理分布式查询中的网络延迟和数据局部性问题。 第三讲:分布式事务与并发控制 本讲重点讲述分布式事务的管理和...
徐俊刚版的“分布式数据库第三版”课件及相关资料提供了全面而深入的学习资源,帮助我们理解并掌握分布式数据库的核心概念、设计原理以及实际应用。 首先,分布式数据库的核心理念在于数据的分片和复制。分片是指将...
分布式数据库系统的关键特性包括数据分片、复制、并发控制、故障恢复和分布式查询处理等。 首先,数据分片是将数据划分为多个片段,每个片段存储在一个不同的节点上,这有助于平衡负载和优化查询性能。分片策略通常...
- **查询可以有效地扩展到整个网络**:在大规模分布式系统中,这一点并不总是成立的。 这些谬误对于设计健壮的分布式系统至关重要,因为它们帮助开发者意识到现实世界中网络环境的复杂性和不确定性,从而采取更为...
后端研发工程师在分布式查询引擎方向的职责包括大数据产品查询引擎模块的开发与维护,查询优化方案的设计和实现,以及处理查询引擎相关问题,以提升产品性能和稳定性。此岗位需要计算机或相关专业背景,熟悉Linux...
2. 挑战:数据一致性维护复杂、网络延迟、分布式事务处理、跨节点查询优化等。 五、分布式数据库的实际应用 1. 大型电商平台:通过分布式数据库处理海量订单,保证交易快速、稳定。 2. 社交媒体:分散用户数据,...
分布式查询优化是指在多个物理节点间分布数据处理任务以提高查询效率的技术。 - **基于索引**:在RDF查询优化中,索引的使用能够显著提高查询性能。索引是一种数据结构,用于快速查找、访问数据库中数据项的位置,...
【Postgres分布式数据库学习资料详解】 在当今大数据与云计算的时代,分布式数据库系统成为了支撑大规模业务应用的核心技术之一。Postgres,全称为PostgreSQL,作为一款开源的对象关系型数据库管理系统(ORM DBMS)...
这份“分布式数据库课件资料宝典”无疑是深入理解这一领域的绝佳资源。下面,我们将详细探讨分布式数据库的相关知识点。 一、分布式数据库的基本概念 分布式数据库系统是由两个或多个相互连接的局部数据库组成的,...
* 分布式查询处理 * 数据复制和冗余 * 事务管理 * 数据加密和安全机制 分布式数据库系统的参考文献 -------------------------------- * TEXTBOOK * 邵佩英《分布式数据库系统及其应用》第二版 科学出版社 * M.T. ...
### 分布式数据库系统原理 #### 一、概述 《分布式数据库系统原理》是一本深入探讨分布式数据库系统设计与实现的经典著作,由M....这使得本书成为了学习和研究分布式数据库系统不可或缺的参考资料之一。
Elasticsearch是一个流行的分布式搜索引擎,它使用JSON DSL(Domain Specific Language)来定义查询,使得用户可以方便地进行各种复杂的搜索操作。 DSL查询文档是Elasticsearch提供的一种结构化查询语言,它允许...