SQL Server远程查询的正确执行方案介绍

数据库 SQL Server
我们今天主要向大家描述的是SQL Server远程查询的正确执行方案,其中包括SQL 命令提供程序支持的专用语级别,以及排序规则兼容性。

以下的文章主要向大家讲述的是SQL Server远程查询的正确执行方案,SQL Server 数据库的试图主要是将评估分布式查询的工作,使尽可能多地委派给 SQL 命令提供程序。如果 SQL 查询只访问存储在提供程序数据源中的远程表。

将从原始分布式查询中析取该查询并在提供程序上SQL Server远程查询执行。这将减少从提供程序返回的行数,并使提供程序得以在评估查询时使用它的索引。

在多大程度上将原始分布式查询委派给 SQL 命令提供程序的影响因素包括:

SQL 命令提供程序支持的专用语级别

SQL Server 仅在受特定的专用语级别支持时才委派操作。专用语级别由高到低为:SQL Server、SQL-92 Entry 级、ODBC core 和 Jet.专用语级别越高,SQL Server 可以给提供程序委派的操作就越多。

说明 当提供程序对应于 SQL Server 链接服务器时,使用 SQL Server 专用语级别。

每个专用语级别都是其下属级别的超集。因此,如果将操作委派给某个级别,也就将它委派给了这一级之上的所有级别。

始终不将涉及下列各项的查询委派给提供程序,总在本地对这类查询进行评估:

  1. bit  
  2. uniqueidentifier  

 

下列操作/语法元素委派给对应的专用语级别(和所有更高的级别):

SQL Server:外联接、CUBE、ROLLUP、模运算符 (%)、位运算符、字符串函数和算术系统函数。

SQL-92 Entry 级:UNION 和 UNION ALL。

ODBC 核心:带 DISTINCT 的聚合函数和字符串常量。

Jet:不带 DISTINCT 的聚合函数、排序 (ORDER BY)、内连接、谓词、子查询运算符(EXISTS、ALL、SOME、IN)、DISTINCT、在上级中没提到的算术运算符、在上级中没提到的常量、以及所有逻辑运算符。

例如,除涉及 CUBE、ROLLUP、外联接、模运算符 (%)、位运算符、字符串函数和算术系统函数的操作外,将所有其它操作都委派给不同时也是 SQL Server远程查询执行 的 SQL-92 Entry 级提供程序。

排序规则兼容性

对于分布式查询,所有字符数据的比较语义由字符集和本地 SQL Server 的排序次序定义。Microsoft SQL Server 2000 支持多种排序规则(每一列的排序规则可以各不相同),每个字符值都具有相关联的排序规则属性。SQL Server 2000 解释来自远程数据源的字符数据的排序规则属性,并相应地对其进行处理。

SQL Server 仅在可以确定下列条件时,才能将在字符列上的比较和 ORDER BY 操作委派给提供程序:

基础数据源使用列的排序规则序列和字符集。

字符比较语义遵从 SQL-92(和 SQL Server)标准。

SQL Server 将根据"分布式查询中的排序规则"主题中的表,确定每一列的排序规则。如果远程数据源支持该排序规则,则提供程序被视为排序规则兼容。

其它 SQL 支持注意事项

SQL 专用语级别不规定下列 SQL 语法元素:

嵌套查询支持

如果提供程序支持嵌套查询(子查询),则 SQL Server 将这些操作委派给提供程序。由于不能通过 OLE DB 属性自动确定嵌套查询支持,系统管理员应设置 NestedQueries 提供程序选项以向 SQL Server 表明提供程序支持嵌套查询。

参数标记支持

如果提供程序通过在查询中使用 ? 参数标记支持参数化查询执行,则 SQL Server 可以将参数化SQL Server远程查询执行委派给提供程序。由于不能通过 OLE DB 属性自动确定嵌套查询支持,系统管理员应设置 DynamicParameters 提供程序选项以向 SQL Server 表明提供程序支持嵌套查询。 

【编辑推荐】

  1. SQL Server 浏览器的正确应用
  2. SQL Server删除群集的实例演示
  3. SQL Server主键列的正确查看方式
  4. SQL Server数据库与XML支持的正确解析经典版
  5. SQL Server 数据库给CPU分配线程的操作流程
     
责任编辑:佚名 来源: 清华大学出版社
相关推荐

2010-07-26 08:49:58

SQL Server游

2010-07-07 13:39:33

SQL Server监

2010-06-29 17:52:02

SQL Server嵌

2010-07-21 09:58:21

SQL Server全

2010-07-14 14:07:50

SQL Server

2010-07-19 11:35:05

2010-07-09 10:36:22

SQL Server

2010-07-01 14:23:25

SQL Server查

2010-07-01 10:20:41

SQL Server

2010-07-22 11:09:33

SQL Server内

2010-07-12 17:18:24

MS SQL Serv

2010-07-14 10:43:00

SQL Server

2010-06-30 16:41:02

识别SQL Serve

2010-07-02 13:18:01

SQL Server

2010-07-14 10:32:26

SQL Server查

2010-11-12 11:48:15

2011-08-18 15:03:47

SQL Server多优化方案

2010-07-07 10:31:43

SQL Server数

2010-07-16 10:41:34

SQL Server

2010-05-12 15:00:50

MySQL事件
点赞
收藏

51CTO技术栈公众号