Что означает код HRESULT 0x80040E99 (DB_E_DUPLICATECONSTRAINTID)?

 
Предыдущий Следующий
DB_E_RESOURCEEXISTS DB_E_OUTOFSPACE

DB_E_DUPLICATECONSTRAINTID

Что означает DB_E_DUPLICATECONSTRAINTID

DB_E_DUPLICATECONSTRAINTID (0x80040E99) — Ограничение уже существует.

Контекст результата 0x80040E99 — подсистема «OLE DB» и область «объекты команд, rowset, accessors, свойства и привязки поставщика». Условие «ограничение уже существует» указывает на тему «дубликат, ограничение, идентификатор», а не на общий отказ всего компонента.

Что проверить и как подтвердить исправление

Не начинайте с общего сброса компонента: сопоставьте первый отказ с фактическими параметрами операции. При 0x80040E99 и условии «ограничение уже существует» установите идентичность и владельца уже существующего объекта; не создавайте второй экземпляр, пока не проверен жизненный цикл первого.

Диагностика 0x80040E99 должна включать интерфейс и метод OLE DB, CLSID и версию поставщика, состояние command/rowset, предоставленные свойства и все записи объекта ошибок OLE DB; отдельно запишите ID, HRESULT, DBID, DBCONSTRAINTDESC, CLSID. Для темы «дубликат, ограничение, идентификатор» при 0x80040E99 важны значения именно на первом отказе, а не после обработки ошибки верхним уровнем.

Для 0x80040E99 применяйте исправление на границе первого отказа: исправляйте состояние конкретного объекта, маску флагов, описание привязок или поддерживаемое поставщиком свойство; не сводите результат к общей «ошибке базы данных». Сообщение «ограничение уже существует» при 0x80040E99 не следует подавлять общей обработкой исключения.

Повторите операцию в том же окружении и сравните первый отличающийся вызов; для результата 0x80040E99 это надёжнее единичного успеха на других данных.

Документация для результата 0x80040E99: OLE DB data definition language · ITableDefinitionWithConstraints · IAlterTable::AlterTable.


Нужно найти другой код? Найти другой код состояния или ошибки.