分布式查询使用的 OLE DB 对象
下表显示了 Transact-SQL 分布式查询使用的 OLE DB 对象和接口。OLE DB 访问接口必须至少支持一些必需的对象和接口,才可用于任何 Transact-SQL 分布式查询。这些对象和接口在表的“必需”列中都标记为“是”。只有在支持高级分布式查询功能时,才需要使用“必需”列中标记为“否”的对象和接口。如果该访问接口不支持接口,则也不会支持相关的 Transact-SQL 功能。例如,如果不支持 IRowsetLocate 和 IRowsetChange 接口,则不能在远程中表使用 UPDATE 和 DELETE 语句。
对象 |
接口 |
必需 |
说明 |
---|---|---|---|
数据源 |
IDBInitialize |
是 |
初始化并设置数据和安全上下文。 |
|
IDBCreateSession |
是 |
创建 DB 会话对象。 |
|
IDBProperties |
是 |
获取有关访问接口功能的信息并设置初始化属性。 |
|
IDBInfo |
否 |
获取有关访问接口支持的 SQL 语法的信息。 |
DB 会话 |
IDBSchemaRowset |
否 |
获取表和列元数据。所需的行集是 TABLES 和 COLUMNS。使用的其他行集(如果有)是 TABLES_INFO、CATALOGS、INDEXES、STATISTICS、TABLE_STATISTICS、VIEWS、PRIMARY_KEYS、TABLE_PRIVILEGES 和 COLUMN_PRIVILEGES。 |
|
IopenRowset |
是 |
打开表、索引或直方图上的行集。 |
|
IgetDataSource |
是 |
从 DB 会话对象返回到数据源对象。 |
|
IDBCreateCommand |
否 |
创建命令对象(查询)。 |
|
ITransactionLocal |
否 |
在访问接口上启动事务。 |
|
ItransactionJoin |
否 |
用于分布式事务支持。如果不支持此接口,则不允许在用户事务中更新远程访问接口。 |
行集(在表上) |
IRowset |
是 |
扫描行。 |
|
IAccessor |
是 |
绑定到行集中的列。 |
|
IColumnsInfo |
是 |
获取有关行集中的列的信息。 |
|
IRowsetInfo |
是 |
获取有关行集属性的信息。 |
|
IrowsetLocate |
否 |
为 UPDATE 或 DELETE 操作和基于索引的查找所必需。 |
|
IrowsetChange |
否 |
为在表中执行的 INSERT、UPDATE 或 DELETE 操作所必需。基表的行集应该支持此接口,以支持 INSERT、UPDATE 或 DELETE 语句。 |
|
IConvertType |
是 |
验证行集是否支持对其列进行特定数据类型转换。 |
行集(在索引上) |
IRowset |
是 |
扫描行。 |
|
IAccessor |
是 |
绑定到行集中的列。 |
|
IColumnsInfo |
是 |
获取有关行集中的列的信息。 |
|
IRowsetInfo |
是 |
获取有关行集属性的信息。 |
|
IrowsetIndex |
是 |
为索引上的行集所必需;用于索引功能(设置范围、查找)。 |
|
IConvertType |
是 |
验证行集是否支持对其列进行特定数据类型转换。 |
命令(可选) |
ICommand |
是 |
用于执行查询。 |
|
ICommandText |
是 |
用于定义查询文本。 |
|
ICommandProperties |
是 |
指定命令返回的行集的必需属性。 |
|
ICommandWithParameters |
否 |
用于参数化查询执行。 |
|
ICommandPrepare |
否 |
用于准备命令以获取元数据。 |
错误(可选) |
IErrorRecords |
是 |
获取指向错误记录的 IErrorInfo 接口的指针。 |
|
IErrorInfo |
是 |
获取错误记录的文本说明。 |
任何对象(可选) |
IsupportErrorInfo |
否 |
确定指定接口是否支持错误对象。 |