分布式查询的使用准则

简介: 只要访问接口支持所需的 OLE DB 接口,则本主题中所提到的每一类 Transact-SQL 语句均可以使用。 Transact-SQL 语句 以下列表列出了 Transact-SQL 语言的一些子集,可对通过基于链接服务器的名称或临时名称访问的远程表使用这些子集: 所有具有标准格式 SELECT select_list FROM 子句 WHERE 子句的查询均允许使用。

只要访问接口支持所需的 OLE DB 接口,则本主题中所提到的每一类 Transact-SQL 语句均可以使用。

Transact-SQL 语句

以下列表列出了 Transact-SQL 语言的一些子集,可对通过基于链接服务器的名称或临时名称访问的远程表使用这些子集:

  • 所有具有标准格式 SELECT select_list FROM 子句 WHERE 子句的查询均允许使用。当 new_table_name 引用远程表时,不允许使用 SELECT 语句的 INTO new_table_name 子句。

  • 在 SELECT、INSERT、UPDATE 和 DELETE 语句中,不能用单个部分或四个部分组成的表名限制远程表中的列。应在 FROM 子句中指定远程表的别名,并且别名应用于限定列名。

  • 无法查询包含 xml 列的表,即使查询可以访问该表中的非 xml 列。

  • 将远程表中的大型对象 (LOB) 列指定为 SELECT 语句的 select_list 中的项时,SELECT 语句不能包含 ORDER BY 子句。

  • IS NULL 和 IS NOT NULL 谓词不能引用远程表中的 LOB 列。

  • 当查询中还包含 WHERE 子句时,在分布式查询中不能使用 GROUP BY ALL。支持不指定 ALL 的 GROUP BY 子句。

  • 只要访问接口符合 OLE DB 对 INSERT 语句的要求,就允许对远程表使用 INSERT 语句。有关详细信息,请参阅 。

  • 无法通过分布式查询将 NULL 常量插入 timestamp 列中。

  • 分布式查询不支持 $IDENTITY 和 $ROWGUIDCOL。无法将显式值插入远程表中的标识列。

  • 如果访问接口符合指定表的 OLE DB 接口要求,则允许对远程表使用 UPDATE 和 DELETE 语句。有关详细信息,请参阅 。

  • 如果访问接口符合对某个远程表进行更新的条件,那么当在 UPDATE 或 DELETE 语句(UPDATE 或 DELETE remote_table WHERE CURRENT OF cursor_name)中指定了该远程表时,即可通过在分布式查询中定义的游标对该远程表进行更新或删除。有关详细信息,请参阅。

  • 不支持对远程表使用 READTEXT、WRITETEXT 和 UPDATETEXT 语句。

  • 如果在 SQL Server 进程外对访问接口进行实例化,则无法在更新或插入操作中引用具有大型对象数据类型(如 textntextimage)的列,访问接口选项 AllowInProcess 为 0。有关详细信息,请参阅。

  • 不允许对链接服务器使用数据定义语言语句(如 CREATE、ALTER 或 DROP 语句)。

  • EXECUTE 语句可以使用 AT 关键字向链接服务器发送传递命令。能否执行该语句取决于链接服务器的 RPC 配置,还取决于链接服务器能否执行该语句。

  • 不允许对链接服务器执行其他数据库级的操作或语句。

其他准则

下面是其他一些限制和准则:

  • STATIC 或 INSENSITIVE 游标可以引用远程表。如果 OLE DB 访问接口满足某些要求,则 KEYSET 游标可以引用远程表。有关这些要求的详细信息,请参阅。其他类型的游标不可以引用远程表。

  • 只对 SQL Server 数据源支持存储过程。

  • 必须先将连接的 ANSI_NULLS 和 ANSI_WARNINGS 选项设置为 ON,然后该连接才能执行分布式查询。有关详细信息,请参阅 。

  • 若要在某一链接服务器上使用表时创建最佳查询计划,查询处理器必须具有来自该链接服务器的数据分布统计。对表的任何列具有有限权限的用户可能没有足够的权限来获取所有有用的统计,并且可能会收到效率较低的查询计划和经历不佳的性能。如果链接服务器是 SQL Server 的实例,若要获取所有可用的统计,用户必须拥有该表或者是链接服务器上 sysadmin 固定服务器角色、db_owner 固定数据库角色或者 db_ddladmin 固定数据库角色的成员。
目录
相关文章
|
搜索推荐
过滤概念(可行性分析)
过滤概念(可行性分析)
|
4月前
|
SQL 安全 Java
探索软件测试的多维策略:从单元到集成,再到性能与安全
在软件开发生命周期中,测试是不可或缺的一环。本文将深入探讨软件测试的多维策略,从单元测试、集成测试到性能测试和安全测试等各个层面进行剖析。我们将通过具体的统计数据和案例分析,揭示不同测试策略的优势和应用场景。文章旨在为读者提供一个全面的测试框架,帮助他们构建更稳定、高效和安全的系统。
95 2
|
1月前
|
存储 分布式计算 负载均衡
|
4月前
|
数据库
业务系统架构实践问题之当一个模型既有独立性又有与其他模型的关联时,判断它是否为聚合根问题如何解决
业务系统架构实践问题之当一个模型既有独立性又有与其他模型的关联时,判断它是否为聚合根问题如何解决
|
5月前
|
存储 监控 数据管理
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
63 0
|
6月前
|
搜索推荐 测试技术
性能场景之业务模型中二八原则的误区
【2月更文挑战第18天】性能场景之业务模型中二八原则的误区
165 6
性能场景之业务模型中二八原则的误区
|
6月前
|
数据挖掘 数据库
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
283 0
|
存储 SQL 数据管理
【数据库原理 • 四】数据库设计和规范化理论
数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。 当前互联网+与大数据,一切都建立在数据库之上,以数据说话,首先需要聚集数据、分析数据和管理数据,数据库技术已成为各种计算机系统的核心技术。数据库相关知识也已成为每个人必须掌握的知识。
661 0
|
定位技术 uml
「业务架构」TOGAF建模之业务架构:组织分解图(组织映射)
「业务架构」TOGAF建模之业务架构:组织分解图(组织映射)
|
项目管理
【软件工程】CMMI 能力成熟度模型集成 ( CMMI 级别 | CMMI 级别、过程域、目标、实践 | CMMI 评估对象 | 过程域的 阶段式分组 | 过程域的 连续式分组 ) ★
【软件工程】CMMI 能力成熟度模型集成 ( CMMI 级别 | CMMI 级别、过程域、目标、实践 | CMMI 评估对象 | 过程域的 阶段式分组 | 过程域的 连续式分组 ) ★
342 0