What does Windows error code 773 (ERROR_BAD_ACCESSOR_FLAGS) mean?

 
Previous Next
ERROR_ROWSNOTRELEASED ERROR_ERRORS_ENCOUNTERED

ERROR_BAD_ACCESSOR_FLAGS

column-binding accessor flags are invalid or unsupported by the provider.

ERROR_BAD_ACCESSOR_FLAGS identifies the condition that this condition An accessor describes how consumer buffers map to row columns. This result means the provider could not interpret the supplied accessor flags, often because flags conflict with the accessor type or requested operation.

Where the result appears

  • OLE DB accessor creation.
  • parameter and row-data bindings.
  • providers with partial optional-feature support.
  • ports between providers with different flag capabilities.

How to interpret the result

Interpret the numeric value in the Win32/LRESULT domain and in the context of the API that returned it. Preserve this result before wrappers convert it to an HRESULT, exception, Boolean failure, or provider-specific message. When recording it, note whether the operation produced usable output; this determines whether the value is completion information, control flow, or a terminal failure.

Diagnostic evidence to collect

  • complete flag bitmask.
  • accessor type and binding array.
  • provider property set and version.
  • column ordinal, data type, offset, and length for each binding.

A diagnostic record for this Win32 error should contain the API name, input flags, relevant handles or object identifiers, thread and process identity, timestamp, and the immediately preceding state transition. Those fields are more useful than a generic screenshot because they show which contract and lifecycle phase produced the value.

Handling and recovery

Build the accessor from flags the provider advertises and reject unknown combinations before the call. Keep parameter accessors separate from row-data accessors when required, and verify structure initialization and size fields.

Retry after this result only when an external state relevant to this operation can actually change. When it is rooted in object state, unsupported capability, ownership, or invalid sequencing, an unchanged retry repeats the defect and can obscure the first useful diagnostic record.

Common misinterpretation

Changing buffer size does not repair an invalid flag combination. Diagnose the accessor metadata before examining returned row bytes.

Guidance for developers

Keep the original it value and its Win32 domain in structured telemetry. If it crosses COM or another HRESULT-based boundary, store both the source Win32 value and the converted result. If it crosses JSON, RPC, or a database boundary, include error_domain, error_code, operation, and object_state so the receiver does not apply a second conversion.

An automated test should construct the specific state that leads to it, assert the exact returned value, and verify cleanup on both the normal and exceptional path. The result test should additionally prove that the caller does not collapse this status into an unrelated generic error and does not retry forever.

References


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