OLE DB Objects Consumed by Distributed Queries

The following table shows the OLE DB objects and interfaces consumed by Transact-SQL distributed queries. An OLE DB provider must support at least a minimal set of objects and interfaces before it can be used in any Transact-SQL distributed queries. These objects and interfaces are marked with a Yes in the Required column of the table. The objects and interfaces with a No in the Required column are required only to support advanced distributed query functionality. If the interface is not supported by the provider, related Transact-SQL functionality is not supported. For example, if the IRowsetLocate and IRowsetChange interfaces are not supported, UPDATE or DELETE statements do not function on remote tables.

Object

Interface

Required

Description

Data Source

IDBInitialize

Yes

Initializes and sets up data and security context.

 

IDBCreateSession

Yes

Creates a DB Session object.

 

IDBProperties

Yes

Gets information about the capabilities of provider and sets initialization properties.

 

IDBInfo

No

Gets information about the SQL syntax supported by the provider.

DB Session

IDBSchemaRowset

No

Gets table and column metadata. Rowsets needed are TABLES and COLUMNS. Other rowsets used, if available, are TABLES_INFO, CATALOGS, INDEXES, STATISTICS, TABLE_STATISTICS, VIEWS, PRIMARY_KEYS, TABLE_PRIVILEGES, and COLUMN_PRIVILEGES.

 

IOpenRowset

Yes

Opens a rowset on a table, index, or histogram.

 

IGetDataSource

Yes

Returns to the data source object from a DB Session object.

 

IDBCreateCommand

No

Creates a Command object (query).

 

ITransactionLocal

No

Starts a transaction on the provider.

 

ITransactionJoin

No

Used for distributed transaction support. If this interface is not supported, updates against a remote provider are not allowed in a user transaction.

Rowset (on a table)

IRowset

Yes

Scans rows.

 

IAccessor

Yes

Binds to columns in a rowset.

 

IColumnsInfo

Yes

Gets information about columns in a rowset.

 

IRowsetInfo

Yes

Gets information about rowset properties.

 

IRowsetLocate

No

Required for UPDATE or DELETE operations and index-based lookups.

 

IRowsetChange

No

Required for INSERT, UPDATE, or DELETE operations on a table. Rowsets against base tables should support this interface for supporting INSERT, UPDATE, or DELETE statements.

 

IConvertType

Yes

Verifies if a rowset supports specific data type conversions on its columns.

Rowset (on an index)

IRowset

Yes

Scans rows.

 

IAccessor

Yes

Binds to columns in a rowset.

 

IColumnsInfo

Yes

Gets information about columns in a rowset.

 

IRowsetInfo

Yes

Gets information about rowset properties.

 

IRowsetIndex

Yes

Required for rowsets on an index; used for indexing functionality (set range, seek).

 

IConvertType

Yes

Verifies whether the rowset supports specific data type conversions on its columns.

Command (optional)

ICommand

Yes

Used to execute queries.

 

ICommandText

Yes

Used for defining the query text.

 

ICommandProperties

Yes

Specifies required properties on rowsets returned by the command.

 

ICommandWithParameters

No

Used for parameterized query execution.

 

ICommandPrepare

No

Used for preparing a command to get metadata.

Error (optional)

IErrorRecords

Yes

Gets a pointer to an IErrorInfo interface for an error record.

 

IErrorInfo

Yes

Gets a text description of an error record.

Any object (optional)

ISupportErrorInfo

No

Determines whether a specified interface supports error objects.