Implemented OLE DB Interfaces (SQL Server Compact)

  • The OLE DB Provider for Microsoft SQL Server Compact 4.0 implements the IRowsetPosition OLE DB interface. This is specific to SQL Server Compact 4.0. The OLE DB provider for SQL Server Compact 4.0 also fully supports the following core OLE DB interfaces:

  • IColumnsInfo

  • ICommand

  • ICommandPrepare

  • ICommandProperties

  • ICommandText

  • ICommandWithParameters

  • IConvertType

  • IDBCreateCommand

  • IDBCreateSession

  • IDBInfo

  • IDBInitialize

  • IDBProperties

  • IDBSchemaRowset

  • IGetDataSource

  • IIndexDefinition

  • IRowset

  • IRowsetBookmark

  • IRowsetChange

  • IRowsetIndex

  • IRowsetInfo

  • IRowsetUpdate

  • ISequentialStream

  • ISessionProperties

  • ISupportErrorInfo

  • ITableCreation

  • ITableDefinition

  • ITableDefinitionWithConstraints

Note Note

The ISSCECompact interface, which was supported by earlier versions of SQL Server Compact 4.0, has been deprecated in SQL Server Compact 4.0. Equivalent functionality is found in the CompactDatabase Method (SQL Server Compact 3.5) of the Engine object.

The OLE DB provider for SQL Server Compact 4.0 also supports several core OLE DB interfaces with some differences in how the interfaces are supported. The following table lists these interfaces and describes how the support differs from the generic OLE DB specification:

Implemented interface

Description of differences


The SQL Server Compact 4.0 IAccessor::CreateAccessor method ignores the DBACCESSOR_OPTIMIZED flag. The DBACCESSOR_OPTIMIZED flag does not affect the performance of either row or parameter accessors because SQL Server Compact 4.0 does not use an internal row cache. All accessors provide equally good performance. Therefore, you do not have to optimize accessor performance.


Only the name of an index that can be modified using IAlterIndex::AlterIndex. This functionality is deprecated.


SQL Server Compact 4.0 supports incrementing and changing the seed of an autoincrement column, but not changing a column to or from autoincrement.

IAlterTable does not guarantee that you can modify every detail about a table. It provides the mechanism for a provider to reveal any table-altering functionality that exists in a provider. Therefore, not every provider permits the same table modifications in their data stores. SQL Server Compact 4.0 supports changing the name of an existing table or column and the DBPROP_COL_DEFAULT, DBPROP_COL_SEED, and DBPROP_COL_INCREMENT properties.

The object renaming functionality is deprecated.


This interface is used to create a new database. The CreateDataSource and GetCreationProperties methods on this interface are supported. Methods for modifying or deleting databases are not supported.


This interface is used to open base tables and indexes.


When you try to change the current index by using IRowsetCurrentIndex, the following rules apply:

  • All accessor handles must be released.

  • All row handles must be released.

  • No pending changes should be outstanding


The OLE DB provider for SQL Server Compact 4.0 does not support IRowsetLocate or IRowsetScroll. Therefore, this interface is used only to reveal row count and position information and is supported only on scrollable Query Processor cursors. For more information, see IRowsetPosition (SQL Server Compact).


SQL Server Compact 4.0 supports the Read Committed, Repeatable Read, and Serializable Transaction Isolation Levels. If you specify a lower Transaction Isolation Level than Read Committed, the setting is ignored and changed to Read Committed Transaction Isolation Level.


For more information, see ILockBytes (SQL Server Compact).

For more information about the differences between the OLE DB provider for SQL Server Compact 4.0 and the generic OLE DB interfaces, see Differences in OLE DB Interfaces (SQL Server Compact).