详解SQL Server分布式查询
2010-09-10 08:54:02在这里我们将要讨论的是微软SQL Server分布式查询的实现,包括远程链接数据库等详细的操作。
SQL Server所谓的分布式查询(Distributed Query)是能够访问存放在同一部计算机或不同计算机上的SQL Server或不同种类的数据源, 从概念上来说分布式查询与普通查询区别 它需要连接多个MSSQL 服务器 也就是具有多了数据源.实现在服务器跨域或跨服务器访问. 而这些查询是否被使用完全看使用的需要.
本篇将演示利用SQL ServerExpress链接远程SQL Server来获取数据方式来详细说明分布式查询需要注意细节.先看一下系统架构数据查询基本处理:
当然如果采用了分布式查询 我们系统采取数据DataBase也就可能在多个远程[Remote Server]上访问时:
如上截取系统架构中关于数据与缓存流向中涉及的分布式查询业务, 当我们从客户端Client发起请求数据时. 首先检查MemCache Server缓存服务器是否有我们想要数据. 如果没有我需要查询数据库. 而此时数据要求查询多个远程服务器上多个数据库中表, 这时利用分布式查询.获得数据 然后更新我们在缓存服务器MemCache Server上数据保持数据更新同步, 同时向客户端Client直接返回数据.那如何来执行这一系列动作中最为关键分布式查询?

<1>分布式查询方式
我们知道Microsoft微软公用的数据访问的API是OLE_DB, 而对数据库MSSQL Server 2005的分布式查询支持也是OLE_DB方式.SQL Server 用户可以使用分布式查询访问以下内容:
A:存储在多个 SQL Server 实例中的分布式数据
B:存储在各种可以使用 OLE DB 访问接口访问的关系和非关系数据源中的异类数据
OLE DB 访问接口将在称为行集的表格格式对象中公开数据。SQL Server 允许在 Transact-SQL 语句中像引用 SQL Server 表一样引用 OLE DB 访问接口中的行集,[其实不用关心这个行集概念 它的功能类似SQL Server中临时表 不过它容积更大 能容纳类型更多 更丰富]
SQL Server 实例的客户机与 OLE DB 访问接口之间的连接 如下图:
从上图可以看出.客户端借助OLEDB接口可以访问Oracle/MS Jet/MS SQL/ODBC/第三方等这些丰富数据源来我们分布式查询提供数据. 说了这么多关于OLEDB底层支持. 关于在MS SQL 2005中则支持两种方式来进行分布式查询:
使用特定名称及特定数据源来直接指定(Add Host Names)
其实这两种方式在实际运用中是有区别的:
方式A:Add Link Server方式建立服务器之间关联.创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问. 一般适用于持久的数据操作 对于数据量偏大 服务器之间交付时间长特点.
方式B: Add Host Name 利用域来唯一识别数据库以及数据库表对象. 来实现跨服务器访问. 这种方式一般比较简单 主要适用于对数据需求临时性查询是使用偏多. 不适合做大批量数据提取. 有性能瓶颈.
<2>分布式查询实现
在进行实现分布式查询之前.本次测试Demo对应的SQL版本:
确定SQL Server版本后如下会演示两种方式来实现分布式查询,并对Distributed Query中详细细节进行说明.
<2.1>链接服务器查询
链接服务器配置使 SQL Server 可以对远程服务器上的 OLE DB 数据源执行命令。链接服务器具有以下优点:
下图显示了链接服务器配置的基础:
现在利用链接服务器方式实现数据访问远程服务器数据库CustomerDB中Users表数据先本地添加LinkServer:
如上市建立连接服务器最简单方式.建立链接服务器过程其实调用了系统存储过程Sp_addlinkedserver. 第一个参数为Name 其实用来唯一标识链接服务器. 当然可以其他任何有意义字符串来定义,但我个人建议使用远程服务器的IP来标识.第二个参数是要添加为链接服务器的 OLE DB 数据源的产品名称. 默认为Null,如果指定”SQL Server“则无需指定其他参数.
如果你的本地装有多个数据库实例. 第一个种方式就不适用.这是就需要用SQL Server2005架构来唯一标识:
对于SQL Server 2005架构这个概念很多人比较陌生:
在用户角色设置中需要对指定访问数据CustomerDB具有读写权限:
在远程服务器创建TEst用户时使用SQL Server身份验证方式登录 这时设置密码为RemoteDB.在使用非Sa用户进行远程:
如上我们首先清除已经可能创建服务器数据记录. 然后创建服务器连接.sp_addlinkedSrvLogin系统存储过程用来创建链接服务器上远程登录之间的映射 . 即我们可以详细设置本地与远程服务器详细的映射信息. 例如设置我们特定用户访问的用户名和密码.
查询数据
查询结果
指定用户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架构中 其实跳过本地与远程服务器建立映射关系的这一步. 通过链接关系建立 其实就是建立一种内部映射关系. 如果没有映射关系则 大部分设置需要手动控制.
直接指定数据源方式 需要开启分布式查询的基本权限 来进行查询:
如上我们首先清除已经可能创建服务器数据记录. 然后创建服务器连接.sp_addlinkedSrvlogin系统存储过程用来创建链接服务器上远程登录之间的映射 . 即我们可以详细设置本地与远程服务器详细的映射信息. 例如设置我们特定用户访问的用户名和密码.
查询数据
查询结果
指定用户Test对CustomerDB访问数据方式测试成功.
<3>问题排查与更多查询方式
当我们在实际编程中进行访问远程数据时 因为不同操作环境会引发各种各样的异常,如下我会提出一种常见的异常方式解决办法和关于远程数据操作更多查询方式.
<3.1>无法建立远程连接
其实这个问题在做分布式查询时极其常见. 而引起这个问题的因素过多. 我们一时无法判断真正引发这个异常地方. 只能通过逐个排查方式来进行设置:
例如我们在建立关联关系后 进行查询时会遇到:
提示是: 在进行远程连接时超时, 引起这个问题原因可能是远程服务器积极拒绝访问!
首先要在SQL Server Configuation Manager中保证你服务已经运行 且是开机自动运行.
再次检查SQL Server 2005外围配置DataBaseEngine允许远程连接:
设置完成后.我们还需要设置SQL Server Analysis Services分析服务也支持远程数据查询:
在远程服务器上如果启用了防火墙则可能对目前SQL Server Server方位实例进行拦截. 所以在服务器端启用防火墙情况下要为SQL Server>
【编辑推荐】
SQL:如何将一个表中某个字段的值全部更新到另外一个表相应的字段
实现的方法和详细的操作步骤如下:1、第一步,打开数据表,例如,要在表中找到数据1,见下图,转到下面的步骤。 2、第二步,完成上述步骤后,单击“new query”选项,见下图,转到下面的步骤。 3、第三步,完成上述步骤后,在弹出的界面中,输入查询sql语句,如下图红线标注的代码所示,然后进入下一步。 4、第四步,完成上述步骤后,单击当前弹出框的“run”选项,见下图,转到下面的步骤。 5、第五步,完成上述步骤后,就获得了想要的结果了,见下图。 这样,问题就解决了。
MS SQL Server,unix,linux各是什么
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。 SQL语言的主要功能就是同各种数据库建立联系,进行沟通。 按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。 SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。 目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。 虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。 SQL ServerSQL Server 是一个关系数据库管理系统。 它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。 在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。 Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。 SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。 具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。 unix,linux 是两款操作系统 目前全球最出名的三款OS(操作系统)是 微软的WINDOWS系统 和 苹果的APPLE系统 以及 unix,linuxunix,linux 属于同一种 很复杂 一般用在ATM上 是一种开放式系统 有很多张版本 安全性很高 一般很难搞懂
SQL Server 2005的有哪些新特点
看看官方的介绍吧:SQL Server 2005 新增功能企业数据管理在当今的互联世界中,数据和管理数据的系统必须始终为 用户可用且能够确保安全。 有了 SQL Server 2005,组织内的用户和信息技术 (IT) 专家将从减少的应用程序停机时间、提高的可伸缩性及 性能、更紧密而灵活的安全控制中获益。 SQL Server 2005 也包括了许多新的和改进的功能来帮助 IT 工作人员更有效率地工作。 SQL Server 2005 包含几个在企业数据管理中关键的增强:易管理性SQL Server 2005 使部署、管理和优化企业数据以及分析应用程序变得更简单、更容易。 作为一个企业数据管理平台,它提供单 一管理控制台,使数据管理员能够在任何地方监视、管理和调谐企业中所有的数据库和相关的服务。 它还提供了一个可以使用 SQL 管理对象轻松编程的可扩展 的管理基础结构,使得用户可以定制和扩展他们的管理环境,同时使独立软件供应商 (ISV) 也能够创建附加的工具和功能来更好地扩展打开即得的能力。 SQL Server Management StudiosQL Server 2005 通 过提供一个集成的管理控制台来监视和管理 SQL Server 关系数据库、Integration Services、 Analysis Services、Reporting Services、Notification Services 以及在数量众多的分布式服务 器和数据库上的 SQL Server Mobile Edition,从而简化了管理工作。 数据库管理员能够同时执行多个任务,例如,编写和执行查询, 查看服务器对象,管理对象,监视系统活动和查看联机帮助。 SQL Server Management Studio 提供了一个开发环境,可在其中使 用 Transact-SQL、多维表达式、XML for Analysis 和 SQL Server Mobile Edition 来编写、编辑 和管理脚本和存储过程。 Management Studio 可以很容易地与源代码控制集成在一起。 Management Studio 还包括一些工具 可用来调度 SQL Server 代理作业和管理维护计划,以自动执行日常维护和操作任务。 管理和脚本编写集成在单一工具中,同时,该工具具有管理所有 类型的服务器的能力,为数据库管理员们提供了更强的生产效率。 SQL Server 2005 开放了 70 多个新的内部数据库性能和 资源使用的度量值,涵盖了从内存、锁定到对事务、网络和磁盘 I/O 的调度等。 这些动态管理视图 (DMV) 提供了对数据库和强大的基础结构的更大的 透明度和可见性,可以主动监视数据库的状况和性能。 SQL 管理对象SQL 管理对象 (SMO) 是一个新的可编程对象集,它 可实现所有 SQL Server 数据库的管理功能。 事实上,Management Studio 就是构建在 SQL 管理对象之上的。 SMO 是作 为 Microsoft Framework 程序集实现的。 您可以使用 SMO 自动执行常见的 SQL Server 管理任务,例如,用 编程方式检索配置设置,创建新数据库,应用 Transact-SQL 脚本,创建 SQL Server 代理作业以及调度备份等。 SMO 对象模型替 代了包含在 SQL Server 早期版本中的分布式管理对象 (DMO),因为它更安全可靠并具有更高的可伸缩性。 可用性在 高可用性技术、额外的备份和恢复功能,以及复制增强上的投资使企业能够构建和部署高可用的应用程序。 在高可用性上的创新有:数据库镜像、故障转移群集、数 据库快照和增强的联机操作,这有助于最小化停机时间,并确保可以访问关键的企业系统。 本节将详细介绍这些增强特性。 数据库镜像数 据库镜像允许事务日志以连续的方式从源服务器传递到单台目标服务器上。 当主系统出现故障时,应用程序可以立即重新连接到辅助服务器上的数据库。 辅助实例几 秒钟内即可检测到主服务器发生了故障,并能立即接受数据库连接。 数据库镜像工作在标
发表评论