Асинхронная обработка каскадных транзакций
Некоторые транзакции могут быть настроены для каскадной обработки по всем связанным записям. Это означает, что изменение родительской записи будет передаваться (каскадно) по всем дочерним записям. Каскадные отношения настраиваются на уровне таблицы. Для получения дополнительной информации о каскадных отношения см. в Настройка каскадного поведения связей с таблицами.
Синхронные и асинхронные режимы
По умолчанию каскадные операции выполняются как синхронные транзакции. Для синхронной каскадной транзакции все затронутые записи идентифицируются системой. По мере обработки записей они блокируются системой. После того, как все изменения были выполнены, записи разблокируются, и транзакция завершается.
Синхронные транзакции с большим количеством записей могут вызвать проблемы с производительностью в средах, когда длительные транзакции завершаются неудачно из-за истечения времени ожидания сервера. Записи блокируются, что не позволяет выполнять другие задания и пользовательские транзакции, которые работают с теми же записями. Кроме того, длительные транзакции могут привести к задержке ожидающих транзакций и запросов, которые снижают производительность системы и могут привести к остановке работы.
Если в среде происходят события истечения времени ожидания или снижается производительность во время выполнения синхронных каскадных операций, ваша среда может стать эффективнее за счет включения асинхронного режима. Основные отличия режимов описаны в следующей таблице.
Синхронный режим | Асинхронный режим |
---|---|
Никакие другие задания не могут быть выполнены для всего набора выбранных записей (прямых или каскадных), пока не завершится каскадная операция. | При назначении, удалении и объединении каскадные изменения объединяются в пакет, блокируя только записи, обрабатываемые в пакете. Это позволяет выполнять другие задания во время операции полного каскадного изменения. |
Когда работа завершена, все данные показывают новое желаемое значение. | По мере выполнения задания каждая завершенная партия отображает желаемое значение. Это означает, что существует время, когда некоторые данные показывают желаемое значение, а некоторые показывают исходное значение, пока полная операция не будет завершена. Часто это называется "итоговая согласованность". |
В случае сбоя одной записи все данные возвращаются к исходному значению. Откат требует повторного редактирования всех завершенных записей, что занимает дополнительное время. | Если одно задание не выполняется, оно повторяется несколько раз, чтобы попытаться выполнить его. Если задание не может быть завершено, ошибка записывается в обладь Системные задания. Обратите внимание, что успешно завершенные записи сохраняют новое значение. |
Если одна из записей в каскадном списке имеет значение, отличное от ожидаемого, задание завершается сбоем и выполняется откат. Например, предположим, что начальная запись принадлежит к Владелец 1 и каскадная операция хочет изменить на Владелец 2. Если одна из связанных последующих записей была изменена на Владелец 3 или удалена до появления блокировки, выполняется откат всего задания. | Для назначения операция всегда работает в режиме перезаписи, изменяя текущее значение на новое, основываясь на родительских и дочерних отношениях. Нет сбоев заданий из-за несоответствия исходного значения. Для удаления, если запись, которая ожидалась как часть набора, отсутствует, все записи до точки отказа считаются завершенными. Пользователь или администратор могут повторно выполнить неудачное задание, что приведет к перерасчету задания для продолжения без недостающей записи. Для слияния, если возникает проблема с отсутствующей записью, задание повторяется и выполняется без отсутствующей записи. |
Асинхронный режим
Когда каскадная транзакция достигает порогового значения для включенных записей, записи обрабатываются асинхронно,
Работа | Threshold |
---|---|
Назначить | 1000 записей |
DELETE | 5,000 записей |
Объединение (Merge) | 1000 записей |
Отслеживание хода асинхронной операции
Администраторы могут контролировать ход асинхронных операций в области Параметры.
Войдите в центр администрирования Power Platform.
Выберите Среды в области навигации. Затем выберите требуемую среду.
Выберите Параметры, развернуть Аудит и журналы, а затем выберите Системные задания.
Каскадные операции отображаются в представлении Системные задания.
Чтобы просмотреть только каскадные операции, в Вид выберите Каскадные операции.
Каскадные операции имеют одно из следующих состояний:
- Завершено: Все пакеты каскадной транзакции успешно завершены.
- В процессе: каскадные изменения в процессе.
- Не удалось: После нескольких попыток некоторые каскадные изменения не удалось выполнить.
Заметка
Невозможно отменить асинхронное каскадное задание. Вы должны дождаться его завершения по состоянию Завершено или Неудачно.
Открытие каскадной операции отображает:
Сколько попыток произошло для конкретной транзакции.
Даты и время для "создано" и "завершено".
Кто создал задание.
Любые сообщения, связанные с заданием, такие как причины сбоя или исключения.
Какие каскадные транзакции могут обрабатываться асинхронно?
Каскадные транзакции назначения, удаления и слияния могут обрабатываться асинхронно.
Заметка
Другие транзакции, такие как общий доступ/отмена общего доступа, сводное представление и изменение родительского элемента, в настоящее время проверяются на предмет асинхронной обработки.
Устранение проблем с асинхронными каскадными операциями
Когда синхронные каскадные задания терпят неудачу, они останавливаются и откатывают все изменения, чтобы ни одна из записей не включала запрошенные изменения. Это может занять много времени, так как откат может занять столько времени, сколько будет продолжаться исходная попытка, и повторная попытка операции начнется снова с первой записи.
В случае сбоя асинхронные операции повторяются несколько раз. В большинстве случаев повторная попытка выполнения задания завершается успешно, и задание может продолжаться до завершения. В некоторых редких случаях повторная попытка не решает проблему. Когда это происходит, асинхронное задание приостанавливается, и администратор и пользователь могут устранить проблему и возобновить задание с того места, где оно было приостановлено.
Распространенные причины сбоев в каскадных операциях
Общие причины сбоев при обработке каскадных операций включают:
- Исключения подключаемого модуля
- Исключения безопасности
Исключения подключаемого модуля
Подключаемые модули добавляются к обработке каскадных операций для выполнения определенных действий при внесении изменений в запись, таких как отправка электронного письма или запуск другого обновления для других записей. Они могут быть предоставлены третьими сторонами или разработаны собственными силами. Если подключаемый модуль генерирует исключение, каскадная операция завершается ошибкой. В зависимости от причины исключения, повторная попытка может решить проблему. Если асинхронное каскадное задание приостановлено из-за сбоев, проверьте все подключаемые модули, связанные с операциями, чтобы убедиться, что они не создают исключения. После исправления задание можно возобновить.
Исключения безопасности
Исключения безопасности возникают, когда у пользователя, выполнившего каскадную операцию, недостаточно прав для внесения изменений в одну или несколько записей, или когда пользователь отключен или удален из системы.
Если пользователь все еще находится в системе, убедитесь, что у него есть необходимые привилегии для изменения записей и что у них есть разрешение на выполнение указанных действий. После того как проблема решена, возобновите задание.
Если пользователь был отключен или удален из системы, повторное включение или чтение пользователя решает проблему, и задание можно будет возобновить. Однако, если пользователь должен быть удален или отключен или не должен иметь разрешений на действия или записи, задание должно быть отменено и перезапущено кем-то с соответствующими разрешениями.
По любым другим вопросам, связанным с неудачными заданиями, обращайтесь в Microsoft службу поддержки. Дополнительные сведения: Обзор поддержки
Устранение проблем с удалением файлов во время каскадного слияния
Если при выполнении операций каскадного слияния возникают сбои из-за того, что файлы удаляются во время выполнения задания, вы можете пропустить проверку родителей. Это позволяет продолжить слияние, даже если кто-то удалит запись из набора, пока задание выполняется в фоновом режиме. Когда вы выбираете объединение записей, в нижней части окна объединения снимите флажок Проверка родительского элемента включена по умолчанию включена. Снимите этот флажок, чтобы пропустить ее.
Пример слияния записи
Представьте, что у вас есть учетные записи с отношением к контакту, который имеет отношение к заказам. Вы хотите объединить две учетные записи.
Если задание выполняется успешно, слияние назначает все связанные контакты и их заказы целевой учетной записи.
Если во время процесса слияния записей другой пользователь удаляет связанную запись контакта, но записи заказа все еще существуют, связанные с записью контакта, задание слияния завершается ошибкой, поскольку родительская запись для дочерней записи отсутствует. Если вы решите пропустить проверку родителей во время слияния записей, заказы с отсутствующей записью контакта объединяются в запись целевой учетной записи. Однако для целевой учетной записи не назначаются никакие связанные контактные записи, и задание завершается.
Объединение, вызывающее блокировки, предотвращающие другие изменения доступа
Операция каскадного объединения предоставляет доступ новому владельцу подчиненной таблицы. Для этого операция каскадного объединения обращается к таблице основных объектов и вносит в нее изменения, требующие блокировки. Если операция объединения содержит много записей (на основе каскадного отношения), эта блокировка может существовать в течение продолжительного времени. Это может привести к ошибке, если операция попытается предоставить или отозвать доступ к несвязанной записи во время выполнения объединения. В этом случае попробуйте выполнить объединение в нерабочее время, чтобы уменьшить блокировку.