Site icon EfmSoft

What does HRESULT 0xC8000645 (hrKeyDuplicate) mean?

 
Previous Next
hrRecordClusteredChanged hrAlreadyPrepared

hrKeyDuplicate

Diagnostic focus

hrKeyDuplicate means an insert or update would violate a unique or primary index key.

This is the legacy Directory Service backup/restore HRESULT form of JET_errKeyDuplicate (0xC8000645).

The key comparison is: hrIndexDuplicate concerns schema names; this code is duplicate row-key data. The first useful observation is to record index name, fully encoded key segments, null handling, transaction snapshot, and existing row bookmark. This evidence separates index schema, current-index cursor state, key construction, and duplicate data.

The ESE objects in play

Diagnostic layerB-tree index definition, key construction, uniqueness, and current-index cursor state
Typical API surfaceJetCreateIndex, JetDeleteIndex, JetSetCurrentIndex, JetMakeKey, JetSeek, and JetSetIndexRange
Code-specific conditionan insert or update would violate a unique or primary index key
First corrective directiontreat it as a concurrency/data-integrity outcome and use an idempotent lookup-or-update strategy

Index schema and runtime key-building state are separate diagnostic layers. Key bytes depend on segment order, column representation, collation, null rules, and sort direction.

Evidence that resolves the ambiguity

Nearby results that mean something different

hrIndexNotFoundthe requested index name is valid but absent from the table
hrKeyIsMadea new key-building sequence was started or modified after the current search key was already complete
hrIndexMustStaythe requested delete would remove an index required by the table layout, commonly the clustered index

A disciplined correction path

  1. Freeze the failing request context and record 0xC8000645, the Jet API name, and the current instance/session ownership.
  2. Verify the code-specific precondition: record index name, fully encoded key segments, null handling, transaction snapshot, and existing row bookmark.
  3. Apply the targeted fix: treat it as a concurrency/data-integrity outcome and use an idempotent lookup-or-update strategy.
  4. Before retrying the operation, reconcile index definition, selected cursor index, and key or uniqueness outcome.

Actions that can hide or worsen the problem

Technical references


Looking for a different code? Search another status or error code.

Exit mobile version