当前位置:学学看123知识中心电脑教学数据库教程Microsoft SQL Server 2000 分布式查询:OLE DB 连接» 正文

Microsoft SQL Server 2000 分布式查询:OLE DB 连接

[06-11 18:18:55]   来源:http://www.xxk123.com  数据库教程   阅读:8231

导读:下面是从 IDBInfo::GetLiteralInfo 检索到的三个文字:DBLITERAL_CATALOG_SEPARATOR、DBLITERAL_SCHEMA_SEPARATOR(用于根据给定的目录、架构和对象名构造完整的对象名称)和 DBLITERAL_QUOTE(用于引用发送到提供程序的 SQL 查询中的标识符名称)。如果提供程序不支持分隔符文字,SQL Server 将使用句点 (.) 作为默认的分隔符字符。如果提供程序只支持目录分隔符字符而不支持架构分隔符字符,则 SQL Server 将把目录分隔符字符也作为架构分隔符字符使用。如果提供程序不支持 DBLITERAL_QUOTE,SQL Server 将使用单引号 (') 作为引用字符。注意: 如果提供程序的名称分隔符文字和这些默认值不匹配,提供程序必须使用 IDBInfo 将它们公开,以便 SQL Server 通过四段式名称访问它的表。如果没有将这些文字公开,那么对于这样的提供程序将只能使用传递查询。表名解析和元数据检索SQL Server 将分布式查询中给定的远程表名称解析为 OL

Microsoft SQL Server 2000 分布式查询:OLE DB 连接,标签:sql数据库教程,access数据库教程,http://www.xxk123.com

下面是从 IDBInfo::GetLiteralInfo 检索到的三个文字:DBLITERAL_CATALOG_SEPARATOR、DBLITERAL_SCHEMA_SEPARATOR(用于根据给定的目录、架构和对象名构造完整的对象名称)和 DBLITERAL_QUOTE(用于引用发送到提供程序的 SQL 查询中的标识符名称)。

如果提供程序不支持分隔符文字,SQL Server 将使用句点 (.) 作为默认的分隔符字符。如果提供程序只支持目录分隔符字符而不支持架构分隔符字符,则 SQL Server 将把目录分隔符字符也作为架构分隔符字符使用。如果提供程序不支持 DBLITERAL_QUOTE,SQL Server 将使用单引号 (') 作为引用字符。

注意:    如果提供程序的名称分隔符文字和这些默认值不匹配,提供程序必须使用 IDBInfo 将它们公开,以便 SQL Server 通过四段式名称访问它的表。如果没有将这些文字公开,那么对于这样的提供程序将只能使用传递查询。

表名解析和元数据检索

SQL Server 将分布式查询中给定的远程表名称解析为 OLE DB 数据源中的特定表或视图。基于链接服务器的和特殊的命名架构都将导致提供程序将名称解释为三段式名称。在使用基于链接服务器的名称时,四段式名称的后三部分形成目录、架构和对象名。在使用特殊名称时,OPENROWSET 函数的第三个参数指定了说明目录、架构和对象名的三段式名称。目录和架构名称中可以有一个为空值或全部为空值。(当目录名和架构名为空时,四段式名称将变成:<服务器名称>...<对象名称>。)在此情况下,SQL Server 搜索架构行集表时将使用 NULL 作为对应的值。

SQL Server 使用的名称解析规则和元数据检索的步骤取决于提供程序是否支持 Session 对象的 IDBSchemaRowset 接口。

如果支持 IDBSchemaRowset,则使用 IDBSchemaRowset 接口中的 TABLES、COLUMNS、INDEXES 和 TABLES_INFO 架构行集。(TABLES_INFO 架构行集在 OLE DB 2.0 中定义。)SQL Server 通过限制 IDBSchemaRowset 接口返回的架构行集来寻找与特定远程表名称部分匹配的架构行。下面是与提供程序支持的架构行集限制有关的规则,以及 SQL Server 使用这些规则来检索远程表元数据的方法:

  • 对 TABLE_NAME 和 COLUMN_NAME 列的限制总是必要的。

  • 如果提供程序支持对 TABLE_CATALOG(或 TABLE_SCHEMA)的限制,SQL Server 将使用对 TABLE_CATALOG(或 TABLE_SCHEMA)的限制。如果在远程表名中没有指定目录(或架构)名称,则使用 NULL 值作为相应的限制值。如果指定了目录(或架构)名称,提供程序必须支持对 TABLE_CATALOG(或 TABLE_SCHEMA)的相应限制。

  • 提供程序必须全部支持对 TABLES 和 COLUMNS 中的 TABLE_SCHEMA 列的限制,或者全部不支持。提供程序必须全部支持对 TABLES 和 COLUMNS 的目录名称限制,或者全部不支持。

  • 如果支持 INDEXES 上的任何限制,提供程序必须全部支持对 TABLES 和 INDEXES 的架构限制,或者全部不支持。提供程序必须全部支持对 TABLES 和 INDEXES 行集的目录名限制,或者全部不支持。

从 TABLES 架构行集中,通过按上述规则设置限制,SQL Server 可检索 TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、TABLE_TYPE 和 TABLE_GUID 列。

从 COLUMNS 架构行集中,SQL Server 可检索 TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME、COLUMN_GUID、ORDINAL_POSITION、COLUMN_FLAGS、IS_NULLABLE、DATA_TYPE、TYPE_GUID、CHARACTER_MAXIMUM_LENGTH、NUMERIC_PRECISION 和 NUMERIC_SCALE 列。COLUMN_NAME、DATA_TYPE 和 ORDINAL_POSITION 必须返回有效的非空值。如果 DATA_TYPE 是 DBTYPE_NUMERIC 或 DBTYPE_DECIMAL,相应的 NUMERIC_PRECISION 和 NUMERIC_SCALE 也必须是有效的非空值。

从可选的 INDEXES 架构行集中,通过按原先规则设置限制,SQL Server 可在指定的远程表上寻找索引。SQL Server 从找到的索引条目中检索 TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、INDEX_CATALOG、INDEX_SCHEMA、INDEX_NAME、PRIMARY_KEY、UNIQUE、CLUSTERED、FILL_FACTOR、ORDINAL_POSITION、COLUMN_NAME、COLLATION、CARDINALITY 和 PAGES 列。

从可选的 TABLES_INFO 行集中,SQL Server 寻找有关指定远程表的附加信息(例如书签支持、书签类型和长度)。除了 TABLES_INFO 行集中的 DESCRIPTION 列以外,所有的列都被使用。TABLES_INFO 行集中的信息按如下要求使用:

  • BOOKMARK_DURABILITY 列用于实现更有效的键集游标。如果该列的值为 BMK_DURABILITY_INTRANSACTION 或更高持久性的值,SQL Server 在实现键集游标时,将对远程表行使用基于书签的检索和更新。

  • BOOKMARK_TYPE、BOOKMARK_DATA TYPE 和 BOOKMARK_MAXIMUM_LENGTH 列用于在编译查询时确定书签的元数据。如果这些列不被支持,SQL Server 将在编译时通过 IOpenRowset 打开基本表行集来获得书签信息。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]  下一页


Tag:数据库教程sql数据库教程,access数据库教程电脑教学 - 数据库教程
前一篇:关于ORACLE连接池

Copyright 学学看123 All Right Reserved.

1 2 3 4 5 6 7 8 9 10