Using Cursors with Distributed Queries

When using cursors with distributed queries, both insensitive, static, and keyset-driven cursor types are supported when the provider supports the necessary OLE DB functionality. Dynamic or forward-only cursors requested with a distributed query are implicitly converted to keyset-driven cursors.

A keyset-driven cursor is supported on a distributed query if all local and remote tables in the query have a unique key. For the conditions under which a keyset cursor is supported on a distributed query, Keyset-Driven Cursors Requirements for OLE DB Providers.

If a keyset-driven cursor is allowed on a distributed query, then it can also be used to update any of the underlying remote tables if the provider requirements for updatability are met. For the requirements for updates on a remote table, see UPDATE and DELETE Requirements for OLE DB Providers.


timestamp columns are required for optimistic concurrency if the update or delete targets are remote. An error occurs if optimistic concurrency is specified but the remote table does not contain a timestamp column. In SQL Server 2000, if a timestamp column did not exist, optimistic concurrency was not maintained for the remote update, but no error was raised.


For distributed queries, there is no requirement that a user transaction be specified if the isolation level is REPEATABLE READ or higher. In SQL Server 2000, a user transaction was required if the isolation level was REPEATABLE READ or higher.