分布式查询的使用准则

简介: 只要访问接口支持所需的 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 固定数据库角色的成员。
目录
相关文章
|
搜索推荐
过滤概念(可行性分析)
过滤概念(可行性分析)
|
3月前
|
数据库 数据库管理 索引
索引在提高查询性能方面的优势体现在哪些方面?
索引在提高查询性能方面具有多方面的显著优势
144 65
|
4月前
|
存储 分布式计算 负载均衡
|
7月前
|
数据库
业务系统架构实践问题之当一个模型既有独立性又有与其他模型的关联时,判断它是否为聚合根问题如何解决
业务系统架构实践问题之当一个模型既有独立性又有与其他模型的关联时,判断它是否为聚合根问题如何解决
|
8月前
|
存储 监控 数据管理
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
106 0
|
SQL 缓存 负载均衡
分布式AKF拆分原则
分布式AKF拆分原则
160 0
|
分布式计算 关系型数据库 BI
KYLIN 建模设计学习总结(概念、空间优化、查询性能优化)
KYLIN 建模设计学习总结(概念、空间优化、查询性能优化)
174 0
|
分布式计算 算法 大数据
白话Elasticsearch45-深入聚合数据分析之易并行聚合算法,三角选择原则,近似聚合算法
白话Elasticsearch45-深入聚合数据分析之易并行聚合算法,三角选择原则,近似聚合算法
119 0
|
Dubbo NoSQL Java
架构:第八章:查询的资料
架构:第八章:查询的资料
|
大数据 分布式数据库 分布式计算
数据分布背后的逻辑
在分布式数据库及大数据平台中,数据如何分布到多台机器中是个很关键的问题。因为很多运算是数据密集型的,如果数据分布做得不好,就会导致网络传输量变大,从而影响性能。 一般来讲,分布式数据库会提供两种分布策略:对于大表按某个字段(的 HASH 值)去分布,大多数情况会使用主键,这样可以把数据分拆到多台机器上;对于小表则采用复制性分布,也就是每个机器上都会复制一份。
1217 0

热门文章

最新文章