代码改变世界

SQL SERVER 2005 分布式查询概念篇(一)

2011-10-25 23:09  Echo.  阅读(527)  评论(1)    收藏  举报

分布式查询是指从多异类数据源进行数据访问(Excel,Access,Orace),原理是通过OLE DB接口访问异类数据源公开的数据行。

SQL SERVER用户可以访问以下内容:

1.        多个SQL SERVER 实例中的分布式数据

2存储在各种可以使用 OLE DB 访问接口访问的关系和非关系数据源中的异类数据。

 

外部数据源的表和视图可以在SELECT,INSERT ,UPDATE,DELETE,MEGRE语句中直接引用,前提是数据软件通过OLE DB访问接口在表格格式行集中公开其数据。

下图显示了SQL SERVER 实例的客户机与OLE DB访问接口之间的关系。

 

 

OK,稍微了解了访问原理后我们来开始讨论如何访问外部数据的具体实现。

 

打开SSMS的时候需要身份验证,同样,很多数据软件也需要对访问客户端进行验证。所以通过SQL SERVER 2005 访问OLE DB数据源需要提供以下信息:

1.        公开数据源的OLE DB访问接口的名称

2.        OLE DB访问接口定位数据源所需的信息

3.        OLE DB数据源可将其公开为行集的对象名称,或可发送到OLE DB访问接口的查询

4.        或者,也可以向SQL SERVER 提供OLE DB数据源的有效登陆ID

 

一.链接服务器进行分布式查询

使用系统SP(存储过程)添加链接服务器进行分布式查询,主要查询方式有2种情形

 

1.        T-SQL中通过四部分名称引用链接服务器的对象. 如何链接服务器为SQL SERVER

则为ServerName.DatabaseName.SchemaName.ObjectName

引用方式如SELECT * FROM ServerName.DatabaseName.SchemaName.ObjectName;

 

2.        OPENQUERY函数的输入参数。OPENQUERY函数向OLE DB发送要执行的命令,返回的行集能够在T-SQL中引用

引用方式为SELECT * FROM OPENQUERY(linked_server, 'query’);

 

二.临时名称进行分布式查询

              临时名称对未定义为链接服务器的OLE DB数据源,用于不常用的查询。在SQL SERVER中通过OPENDATASOURCE函数,OPENROWSET函数 提供OLE DB数据源中的数据连接信息。OPENDATASOURCE,OPENROWSET只应用于不常访问的OLE DB接口,对于经常刚问的OLE DB接口应该定义链接服务器,再者OPENROWSET,OPENDATASOUCE 不提供链接服务器的所有功能,如查询目录信息和安全管理和功能。每次通过函数访问OLE DB都必须提供连接信息很麻烦的。

 

OPENROWSET,OPENDATASOURCE 函数不支持T-SQL 变量作为参数

 

OPENROWSET 访问接口需要提供以下信息,在T-SQL语句中使用表或视图引用的任何位置

1.        连接到OLE DB 数据源的全部信息

2.        将要生成的行集的对象名或查询

 

OPENDATASOURCE 可使以下内容制定

1.        注册为用于访问数据源的OLE DB访问接口的PROGID名称

2.        连接字符串。连接到OLE DB访问接口的各种连接属性。连接字符串的语法是关键字/值对的序列

 

三.访问连接服务器

创建链接服务器后,可以使用以下方法访问:

1 使用基于链接服务器的名称。通过在INSERT ,UPDATE,DELETE ,SELECT语句访问链接服务器中的表的分布式查询

2 使用四部分名称对链接服务器执行远程存储过程

3 EXECUTE语句通过使用AT linked_server_name扩展插件来执行任意参数化传递命令

 

总结:可见SQL SERVER 2005主要通过链接服务器,OPENQUERY,OPENDATASOURE,OPENROWSET 函数对公开了OLE DB访问接口的异类数据源进行分布式查询。