Асинхронна обробка каскадних транзакцій
Ви можете налаштувати каскадне поширення певних транзакцій на всі пов’язані записи. Це означає, що зміни в записі батьківського елемента передаються (каскадом вниз) по всіх записах дочірніх елементів. Каскадні зв’язки налаштовуються на рівні таблиці. Для отримання додаткових відомостей про каскадні зв'язки див. Налаштування поведінки каскадних зв'язків таблиць.
Синхронні та асинхронні режими
За замовчуванням каскадна операція виконуються як синхронна транзакція. Під час синхронної каскадної транзакції в системі визначаються всі записи, які зазнали впливу. Під час обробки записів система блокує їх. Після застосування всіх змін вони розблоковуються та транзакція завершується.
Синхронні транзакції з великою кількістю записів можуть спричинити проблеми з продуктивністю в середовищах, коли тривалі транзакції не вдається виконати через тайм-аути сервера. Записи блокуються, що запобігає виконанню інших завдань і транзакцій користувачів, які працюють з тими самими записами. Крім того, тривалі транзакції можуть призвести до відставання незавершених транзакцій і запитів, що знизить продуктивність системи та може спричинити зупинку роботи.
Якщо в середовищі спостерігається очікування підключення або зниження продуктивності під час виконання синхронних каскадних операцій, увімкнення асинхронного режиму може вирішити ці проблеми. Основні відмінності між режимами описані в наступній таблиці.
Синхронний режим | Асинхронний режим |
---|---|
Під час виконання каскадної операції не можна виконувати жодні інші завдання з цілим набором вибраних записів (прямим або каскадним). | Для функцій «Призначити», «Видалити» та «Об’єднати» каскадні зміни групуються, блокуючи лише записи, які обробляються в пакеті. Це дає змогу виконувати інші завдання під час каскадного застосування зміни. |
Після завершення завдання всі дані показують нове бажане значення. | Під час виконання завдання кожен завершений пакет відображає бажане значення. Це означає, що є час, коли деякі дані показують бажане значення, а деякі – початкове значення до повного завершення операції. Це називається «кінцевою послідовністю». |
Якщо стається помилка одного запису, значення всіх даних відкочуються до вихідних. Відкат вимагає повторного редагування всіх виконаних записів, що займає більше часу. | Якщо станеться помилка одного завдання, буде здійснено кілька спроб завершити його. Якщо завдання не вдається виконати, збій реєструється в області «Системні завдання». Зверніть увагу: успішно оброблені записи зберігають нове значення. |
Якщо один із записів у каскадному списку має значення, яке відрізняється від очікуваного, завдання не виконується і відкочується. Наприклад, припустимо, що початковий запис належить Власнику 1 і каскадна операція хоче змінити його на Власника 2. Якщо один із нижчих пов’язаних записів змінився на Власника 3 або видалений до того, як відбудеться блокування, все завдання відкочується назад. | Для функції «Призначити» операція завжди працює в режимі перезапису, змінюючи поточне значення на нове на основі відношення «батько-нащадок». Невідповідність вихідного значення не призводить до помилок виконання завдання. Для Delete, якщо відсутній запис, який очікувався як частина набору, всі записи до точки відмови вважаються завершеними. Користувач або адміністратор може повторно виконати невдале завдання, яке перераховує завдання для продовження без пропущеного запису. У разі злиття, якщо виникає проблема з відсутнім записом, завдання повторюється та виконується без пропущеного запису. |
Асинхронний режим
Коли каскадна транзакція досягає порогу для включених записів, записи обробляються асинхронно,
Операція | Граничне значення |
---|---|
Призначити | 1000 записів |
Delete | 5,000 записів |
Злиття | 1000 записів |
Відстеження перебігу асинхронної операції
Адміністратори можуть відстежувати виконання асинхронних операцій в області Настройки.
Авторизуйтесь в Центрі Power Platform адміністрування.
Виберіть Середовища в області переходів. Потім виберіть потрібне оточення.
Виберіть Параметри, розгорніть розділ Відстеження та журнали, потім виберіть Системні завдання.
Каскадні операції відображаються в режимі перегляду «Системні завдання».
Щоб переглянути лише каскадні операції, у селекторі Подання виберіть Каскадні операції.
Каскадна операція може мати будь-який із таких станів:
- Завершено: Всі пакети каскадної транзакції були успішно завершені.
- У процесі: Каскадні зміни тривають.
- Помилка: після кількох спроб деякі каскадні зміни не вдалися.
Нотатка
Не можна скасувати виконання асинхронного каскадного завдання. Слід дочекатися його завершення, указавши стан Виконано або Не вдалося.
У вікні каскадної операції можна переглянути такі відомості:
Кількість повторних спроб виконання конкретної транзакції.
Дата й час створення та виконання транзакції.
Автор завдання.
Усі повідомлення, пов’язані із завданням, наприклад причини помилок або винятки.
Які каскадні транзакцій можна обробляти в асинхронному режимі?
Обробка призначення, видалення та злиття каскадних транзакцій може здійснюватися асинхронно.
Нотатка
Інші транзакції, такі як share/unshare, rollup view та re-parent, наразі розглядаються для асинхронної обробки.
Пошук і виправлення неполадок при асинхронних послідовних операціях
Коли синхронні каскадні завдання не вдається, вони зупиняються і відкочують всі зміни, щоб жоден із записів не включав запитувані зміни. Це може зайняти багато часу, оскільки відкат може тривати стільки ж часу, скільки і початкова спроба, а повторна спроба операції починається знову з першого запису.
Асинхронні операції повторюються кілька разів, якщо виникає збій. У більшості випадків повторне виконання завдання буде успішним, і завдання зможе продовжуватися до його завершення. У деяких рідкісних випадках повторна спроба не вирішує проблему. Коли це трапляється, асинхронне завдання призупиняється, і адміністратор і користувач можуть усунути проблему та відновити роботу з того моменту, де воно було призупинено.
Поширені причини збоїв послідовних операцій
Поширені причини збоїв при обробці послідовних операцій включають наведені далі.
- Винятки з плагінів
- Винятки з системи безпеки
Винятки з плагінів
Компоненти plug-in додаються до обробки каскадних операцій для виконання певних дій у разі внесення змін до запису, наприклад надсилання електронного листа або запуску іншого оновлення для інших записів. Їхніми постачальниками можуть бути сторонні особи, або вони можуть розроблятися організацією самостійно. Якщо плагін генерує виняток, каскадна операція завершується помилкою. Повторна спроба може вирішити проблему, залежно від її причини. Якщо асинхронне каскадне завдання призупинено через збої, перевірте всі плагіни, пов’язані з операціями, щоб переконатися, що вони не генерують винятки. Після виправлення проблеми виконання завдання можна відновити.
Винятки з системи безпеки
Винятки системи безпеки виникають, коли користувач, який виконав послідовну операцію, має недостатні права для внесення зміни до одного запису або більше, або цього користувача вимкнено чи видалено із системи.
Якщо користувач все ще перебуває в системі, переконайтеся, що він має необхідні привілеї для внесення змін до записів і що він має дозвіл на виконання вказаних дій. Після того, як це буде вирішено, відновіть роботу.
Якщо користувача було вимкнено або видалено з системи, повторне ввімкнення або повторне додавання користувача вирішує проблему, і роботу можна відновити. Однак якщо необхідно видалити або вимкнути цього користувача або якщо не передбачається, щоб цей користувач мав дозволи для виконання дій або операцій із записами, завдання слід скасувати, після чого інший користувач, який має відповідні дозволи, повинен повторно почати виконання завдання.
У разі виникнення інших проблем, що стосуються збоїв при виконанні завдань зверніться до служби підтримки Microsoft. Додаткові відомості: Огляд підтримки
При об’єднанні послідовних операцій виникли проблеми з видаленням файлу пошуку та виправлення неполадок
При виникненні збоїв під час об’єднання послідовних операцій через видалення файлів, коли завдання запущено, можна пропустити перевірку зв’язків із батьківськими об’єктами. Це забезпечить продовження об’єднання, навіть якщо буде видалено запис із набору, коли завдання виконується в фоновому режимі. Якщо ви вибираєте об’єднання записів, у нижній частині вікна злиття зніміть прапорець Батьківський елемент увімкнено за промовчанням. Зніміть позначку з цього, щоб проігнорувати опцію перевірки батьківства.
Приклад об’єднання записів
Уявіть собі, що у вас є бізнес-партнери із зв'язком із контактною особою, яка має відношення до замовлень. Ви бажаєте об’єднати записи двох бізнес-партнерів.
Якщо завдання виконується успішно, функція об’єднання призначає всіх пов’язаних контактних осіб і їхні замовлення цільовому бізнес-партнеру.
Якщо під час процесу злиття записів інший користувач видаляє пов’язаний запис контакту, але записи замовлень, пов’язані з записом контакту, завдання злиття не виконується через відсутність батьківського елемента дочірнього елемента. Якщо ви вирішите пропустити перевірку батьківського оформлення під час злиття записів, замовлення з відсутнім записом контактної особи об’єднуються в запис цільового облікового запису. Однак жодні пов’язані записи контактів не призначаються цільовому обліковому запису, і робота завершується.
Злиття викликає блокування, які запобігають внесенню інших змін до доступу
Операція каскадного злиття надає доступ до нового відповідального за залежну таблицю. Для цього операція Каскадного злиття звертається та вносить зміни до таблиці головних об’єктів, які потребують блокування. Якщо операція злиття містить багато записів (це залежить від каскадного зв'язку), то це блокування може тривати протягом досить довгого часу. Це може призвести до помилки, якщо під час злиття операція намагається надати або відкликати доступ до непов’язаного запису. Якщо таке станеться, спробуйте виконати злиття у неробочий час, щоб знизити час блокування.