科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道细化解析:教你快速理解“远程查询执行”

细化解析:教你快速理解“远程查询执行”

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SQL Server试图将评估分布式查询的工作尽可能多地委派给SQL命令提供程序。如果SQL查询只访问存储在提供程序数据源中的远程表,将从原始分布式查询中析取该查询并在提供程序上执行。

作者:赛迪网 Alice 来源:天新网 2008年3月27日

关键字: Mssql SQL SQL Server 数据库

  • 评论
  • 分享微博
  • 分享邮件

SQL Server 试图将评估分布式查询的工作尽可能多地委派给 SQL 命令提供程序。如果 SQL 查询只访问存储在提供程序数据源中的远程表,将从原始分布式查询中析取该查询并在提供程序上执行。这将减少从提供程序返回的行数,并使提供程序得以在评估查询时使用它的索引。

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

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

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

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

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

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

◆bit

◆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 可以将参数化查询执行委派给提供程序。由于不能通过 OLE DB 属性自动确定嵌套查询支持,系统管理员应设置 DynamicParameters 提供程序选项以向 SQL Server 表明提供程序支持嵌套查询。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章