Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Диспетчер ресурсов использует журнал диспетчера транзакций для отслеживания состояния транзакции. Действие диспетчера ресурсов при обработке транзакции выглядит следующим образом:
- Клиент передает транзакцию в RM явным образом.
- RM заверяет в транзакцию с помощью CreateEnlistment.
- Затем пользователь может продолжить выполнение любой операции.
- Когда пользователь вызывает CommitTransaction, KTM отправляет уведомление PREPARE_TRANSACTION в RM. На этом этапе RM сбрасывает на диск любые изменения, которые должны быть необходимы для фиксации транзакции, но могут завершиться ошибкой. Если эти операции выполнены успешно, RM сигнализирует о завершении операции подготовки путем вызова PrepareComplete. Если эти операции завершаются ошибкой, служба управления правами отвечает путем вызова RollBackEnlistment.
- Диспетчер ресурсов получает уведомление о подготовке.
- Диспетчер ресурсов очищает все данные, связанные с транзакцией, в файл журнала Common Log Services.
- Диспетчер ресурсов вызывает функцию PrepareComplete и ожидает получения результата транзакции из KTM.
- В зависимости от результата транзакции диспетчер ресурсов получает событие уведомления о фиксации или откате. Если диспетчер ресурсов получает уведомление о фиксации, он делает изменения постоянными и сообщает KTM, вызвав функцию CommitComplete. Если диспетчер ресурсов получает уведомление об откате, он удаляет все изменения и возвращает состояние, которое существовало до любых транзакций изменений и сообщает KTM, вызвав RollbackComplete.
Функции Resource Manager
Следующие функции используются с диспетчерами ресурсов.
| Функция | Описание |
|---|---|
| CreateResourceManager | Создает новый объект диспетчера ресурсов (RM) и связывает RM с диспетчером транзакций (TM). |
| GetNotificationResourceManager | Запрашивает и получает уведомление для диспетчера ресурсов (RM). Эта функция используется регистром RM для получения уведомлений при изменении состояния транзакции. |
| GetNotificationResourceManagerAsync | Запросы и получение асинхронного уведомления для диспетчера ресурсов (RM). Эта функция используется регистром RM для получения уведомлений при изменении состояния транзакции. |
| OpenResourceManager | Открывает существующий диспетчер ресурсов (RM). |
| ПодготовкаЗавершена | Указывает, что диспетчер ресурсов (RM) завершил всю обработку, необходимую для обеспечения успешности операции фиксации или прерывания для указанной транзакции. |
| PrePrepareComplete | Сигнализирует о том, что этот диспетчер ресурсов завершил свою предварительную подготовку, чтобы другие руководители ресурсов могли начать свои операции подготовки. |
| SetResourceManagerCompletionPort | Связывает указанный порт завершения ввода-вывода с указанным диспетчером ресурсов (RM). Этот порт получает все уведомления для RM. |