Server-Side Cursor Combinations

To set a server-side cursor location, you can use this line of code:
obRecordset.CursorLocation = adUseServer
The following tables list the server-side cursor combinations that are supported for the local, IOM, SAS/SHARE, and Base SAS providers.
Server-Side Cursor Combinations Supported by the Local Provider
Cursor Type
Lock Type
Supported Features
adOpenDynamic
adLockReadOnly
adBookmark, adFind, adHoldRecords, adMovePrevious
adOpenForwardOnly
adLockReadOnly
adFind, adHoldRecords
Server-Side Cursor Combinations Supported by the IOM Provider
Cursor Type
Lock Type
Supported Features
adOpenDynamic
adLockBatchOptimistic
adAddNew, adBookmark, adDelete, adFind, adHoldRecords, adMovePrevious, adUpdate, adUpdateBatch
adLockOptimistic
adAddNew, adBookmark, adDelete, adFind, adHoldRecords, adMovePrevious, adUpdate, adUpdateBatch
adLockPessimistic
adAddNew, adBookmark, adDelete, adFind, adHoldRecords, adMovePrevious, adUpdate, adUpdateBatch
adLockReadOnly
adBookmark, adFind, adHoldRecords, adMovePrevious
adOpenForwardOnly
adLockBatchOptimistic
adAddNew, adDelete, adFind, adHoldRecords, adUpdate, adUpdateBatch
adLockOptimistic
adAddNew, adDelete, adFind, adHoldRecords, adUpdate, adUpdateBatch
adLockPessimistic
adAddNew, adDelete, adFind, adHoldRecords, adUpdate, adUpdateBatch
adLockReadOnly
adFind, adHoldRecords
Server-Side Cursor Combinations Supported by the SAS/SHARE and Base SAS Providers
Cursor Type
Lock Type
Supported Features
adOpenDynamic
adLockBatchOptimistic
adAddNew, adBookmark, adDelete, adFind, adHoldRecords, adMovePrevious, adUpdate, adUpdateBatch
adLockOptimistic
adAddNew, adBookmark, adDelete, adFind, adHoldRecords, adMovePrevious, adUpdate, adUpdateBatch
adLockReadOnly
adBookmark, adFind, adHoldRecords, adMovePrevious
adOpenForwardOnly
adLockBatchOptimistic
adAddNew, adDelete, adFind, adHoldRecords, adUpdate, adUpdateBatch
adLockOptimistic
adAddNew, adDelete, adFind, adHoldRecords, adUpdate, adUpdateBatch
adLockReadOnly
adFind, adHoldRecords