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. |