| Previous | Next |
| DB_E_NOTSUPPORTED | DB_E_BADORDINAL |
DB_E_MAXPENDCHANGESEXCEEDED
Meaning
Windows documents DB_E_MAXPENDCHANGESEXCEEDED as “Number of rows with pending changes exceeded the limit”. In this case, a deferred-update rowset would exceed the provider limit for rows carrying pending changes.
Evidence to collect
When recording diagnostic data involving changed row values, keys and original-value snapshots, use types, lengths, hashes or redacted identifiers rather than secrets or complete business data.
- Evidence 1: granted maximum-pending-row property.
- Evidence 2: counts by pending insert, update and delete state.
- Evidence 3: rows retained only by pending state or storage objects.
Relevant contract
Deferred-update rowsets retain pending inserts, updates and deletes until IRowsetUpdate::Update or Undo resolves them. Rows with reference count zero can remain active solely because pending state still exists, and provider limits can count those rows.
Investigation of this result should start with the rowset generation, HROW state, pending-status array and granted update properties.
Conditions that specifically lead to it
- Cause 1: too many edits accumulated without Update or Undo.
- Cause 2: zero-reference rows remain active because their changes are pending.
- Cause 3: the provider grants a lower DBPROP_MAXPENDINGROWS value than the application assumes.
Diagnostic sequence
- Identify the exact failing stage: a deferred-update rowset would exceed the provider limit for rows carrying pending changes.
Corrective actions
- Action 1: commit valid batches with IRowsetUpdate::Update.
- Action 2: undo abandoned edits promptly.
- Action 3: bound editing batches to the provider-granted limit.
Practical scenario
An offline editor stages thousands of row changes in one rowset; flushing bounded batches prevents the pending-change limit.
Retry and recovery
Retry rule: retry after pending rows have been successfully updated or undone.
Difference from nearby HRESULT values
DB_E_ROWLIMITEXCEEDED concerns active rows generally, while DB_E_MAXPENDCHANGESEXCEEDED specifically counts deferred changes.
Official Microsoft references
Looking for a different code? Search another status or error code.