| Предыдущий | Следующий |
| PEER_E_MAX_RECORD_SIZE_EXCEEDED | PEER_E_DATABASE_NOT_PRESENT |
PEER_E_DATABASE_ALREADY_PRESENT
Какой peer contract отклонён
PEER_E_DATABASE_ALREADY_PRESENT — HRESULT 0x80630305 означает, что для сочетания graph ID, peer ID и имени базы, указанного при создании/импорте, локальная база уже существует. PEER_E_DATABASE_ALREADY_PRESENT — Базовое описание сообщает результат; для диагностики нужен контракт данных и жизненный цикл, используемые PeerGraphCreate/Open и импортом базы графа.
Peer-записи объединяют типизированную структуру записи, необязательные доступные для поиска XML-атрибуты, полезную нагрузку, метаданные создателя и срок действия. Локальная база может получать записи в порядке, отличающемся от зависимостей приложения.
Минимальный диагностический пакет
| Элемент | Доказательство |
|---|---|
| Исходные данные | Сохраните целевой путь, graph ID и peer ID, hash существующей базы, режим создания/импорта и намерение приложения: открыть, заменить или импортировать. |
| Контекст-владелец | Запишите Windows user, process integrity, graph/group handle, database path и выбранный cloud. |
| Предыдущий успех | Сохраните последний успешный результат create/open/enumerate/parse/register/sign-in, создавший объект. |
| Порядок результатов | Сохраняйте первый HRESULT, чтобы cleanup failures не заменили код, отклонивший запрос. |
Целевое воспроизведение
используйте для импорта чистую временную цель и сравните с исходной занятой целью, не удаляя ни одну из баз. Используйте disposable identities/groups, если тест публикует names, создаёт credentials или изменяет replicated database.
Почему код сравнения отличается
PEER_E_DUPLICATE_GRAPH отличается тем, что database-already-present относится к identity постоянного хранилища, а duplicate-graph — к конфликту объекта графа внутри процесса. Диагностический отчёт должен сохранять symbolic constant и unsigned hexadecimal value.
Рекомендуемое изменение
откройте существующую базу, если именно она нужна, либо явно выберите новую цель для импорта; не заменяйте реплицируемое состояние без явного решения. Не удаляйте все peer databases, certificate store или firewall rules: широкие сбросы стирают доказательства и не подтверждают исправление caller contract.
Подтверждение исправления
- Исходный input теперь проходит точную проверку, представленную этим HRESULT.
- Операция достигает требуемого результата для графа, группы, записи, PNRP или Peer Collaboration.
- Несвязанные identity material, membership credentials и replicated records остаются неизменными.
Инструментирование и регрессионное покрытие
Фиксируйте первый неудачный вызов, а не более поздний результат cleanup. Решающее значение имеют целевой путь, graph ID и peer ID, hash существующей базы, режим создания/импорта и намерение приложения: открыть, заменить или импортировать.
| Регрессионный уровень | Проверяемый случай | Условие прохождения |
|---|---|---|
| Входные данные и время жизни объекта | Постройте минимальный сценарий, в котором для указанного при создании/импорте сочетания graph ID, peer ID и имени базы локальная база уже существует. | В тесте фиксируются владеющий дескриптор, контекст пользователя и точный API из PeerGraphCreate/Open и импорта базы графа. |
| Контролируемое сравнение | используйте для импорта чистую временную цель и сравните с исходной занятой целью, не удаляя ни одну из баз. | Между неудачным и успешным запуском меняется только нужное локальное реплицируемое хранилище. |
| Путь восстановления | откройте существующую базу, если именно она нужна, либо явно выберите новую цель для импорта; не заменяйте реплицируемое состояние без явного решения. | Нужная операция завершается успешно без замены несвязанных метаданных поиска и срока действия. |
Сохраняйте unsigned hexadecimal HRESULT, symbolic names и timestamps в одной trace. Такая запись позволяет регрессионному тесту отличить этот контракт записи от последующего сбоя транспорта, авторизации или приложения.
Технические ссылки
- Microsoft: схема атрибутов записи — источник документирует соответствующую peer boundary.
- Microsoft: формат поискового запроса по записям — источник документирует соответствующую peer boundary.
- Microsoft: зависимости записей — источник документирует соответствующую peer boundary.
- Microsoft: функции Grouping API — источник документирует соответствующую peer boundary.
Нужно найти другой код? Найти другой код состояния или ошибки.