Споделяне чрез


Асинхронна обработка на каскадни транзакции

Някои транзакции могат да бъдат конфигурирани да каскадират във всички свързани записи. Това означава, че промяната в родителския запис се извършва върху всички дъщерни записи. Каскадни отношения се конфигурират на ниво таблица. За повече информация относно каскадни връзки вижте Конфигурирайте каскадно поведение на връзката на таблицата.

Синхронни срещу асинхронни режими

По подразбиране каскадните операции се извършват като синхронна транзакция. За синхронна каскадна транзакция всички засегнати записи се идентифицират от системата. Докато записите се обработват, те са заключени от системата. След като всички промени бъдат завършени, записите се отключват и транзакцията завършва.

Синхронните транзакции с голям брой записи могат да причинят проблеми с производителността за среди, когато дългосрочните транзакции са неуспешни поради изчакване на сървъра. Записите се заключват, което предотвратява изпълнението на други задачи и потребителски транзакции, които работят със същите записи. Освен това дългосрочните транзакции могат да доведат до изоставане от чакащи транзакции и заявки, които намаляват производителността на системата и могат да причинят спиране на работата.

Ако за дадена среда възникват изтичания на времето на изчакване или понижена производителност по време на изпълнение на синхронните каскадни операции, може да е полезно за средата да се активира асинхронният режим. Основните разлики между режимите са описани в следващата таблица.

Синхронен режим Асинхронен режим
Никакви други задачи не могат да бъдат изпълнявани върху целия набор от избрани записи (директни или каскадни), докато каскадната операция не приключи. За Присвояване, Изтриване и Обединяване каскадните промени се групират, като се заключват само записите, които се обработват в партидата. Това позволява да се изпълняват други задачи по време на операцията за пълна каскадна промяна.
Когато задачата завърши, всички данни показват новата желана стойност. Докато се изпълнява задачата, всяка завършена партида показва желаната стойност. Това означава, че има време, когато някои данни показват желаната стойност, а други показват първоначалната стойност, докато пълната операция не бъде завършена. Това се нарича "евентуална последователност".
Ако един запис е неуспешен, всички данни се връщат до първоначалната стойност. Връщането изисква повторно редактиране на всички завършени записи, което отнема повече време. Ако една задача е неуспешна, тя се повтаря многократно, докато опитът завърши успешно. Ако задачата не може да бъде завършена, грешката се записва в областта Системни задачи . Забележете, че успешно завършените записи запазват новата стойност.
Ако един от записите в каскадния списък има стойност, различна от очакваната, задачата се проваля и се връща назад. Например, да предположим, че началният запис принадлежи на собственик 1 и каскадна операция иска да го промени на собственик 2. Ако един от свързаните записи надолу по веригата се е променил на собственик 3 или е изтрит преди заключването, цялата задача се връща назад. За Присвояване операцията винаги работи в режим на презаписване, променяйки текущата стойност на новата стойност въз основа на релацията родител-дете. Няма неуспешни задачи поради несъответствие с първоначалната стойност. За изтриване, ако липсва запис, който се е очаквал като част от набора, всички записи до точката на неуспех се считат за завършени. Потребителят или администраторът може да изпълни отново неуспешната задача, което преизчислява задачата, за да продължи без липсващия запис. За сливане, ако има проблем с липсващ запис, задачата се опитва отново и се изпълнява без липсващия запис.

Асинхронен режим

Когато каскадна транзакция достигне прага за включени записи, записите се обработват асинхронно,

Операции Праг
Възлагане 1000 записа
Delete 5,000 записа
Обедини 1000 записа

Проследяване на напредъка на асинхронна операция

Администраторите могат да наблюдават обработката на асинхронни операции в областта Настройки.

  1. Влезте в центъра Power Platform заадминистриране.

  2. Изберете Среди в областта за навигация. След това изберете желаната среда.

  3. Изберете Настройки, разгънете Одит и регистрационни файлове и след това изберете Системни задачи.

  4. Каскадните операции се показват в изгледа Системни задачи .

    Изглед на каскадни операции.

    За да видите само каскадните операции, в селектора Изглед изберете Каскадни операции.

    Селектор за изглед на каскадни операции.

Каскадните операции имат някое от следните състояния:

  • Завършени: Всички партиди от каскадната транзакция са завършени успешно.
  • В ход: Каскадни промени са в ход.
  • Неуспешно: След множество повторни повторения, някои от каскадните промени са неуспешни.

Бележка

Не е възможно да отмените асинхронна каскадна задача. Трябва да изчакате да завърши, като посочите състояние Завършено или Неуспешно.

При отваряне на каскадна операция се показва следното:

  • Колко опита са били направени за конкретната транзакция.

  • Дати и часове на създаване и завършване.

  • Кой е създал задачата.

  • Всякакви съобщения, свързани със задачата, като например причини за неуспех или изключения.

    Запис на каскадна операция.

Кои каскадни транзакции могат да бъдат обработвани асинхронно?

Присвояването, изтриването и обединяването на каскадни транзакции могат да се обработват асинхронно.

Бележка

Други транзакции, като споделяне/премахване, сборен изглед и повторно родителство, в момента се преглеждат за асинхронна обработка.

Отстраняване на проблеми с асинхронни каскадни операции

Когато синхронните каскадни задачи са неуспешни, те спират и връщат всички промени, така че нито един от записите да не включва исканите промени. Това може да отнеме много време, тъй като връщането може да отнеме толкова време, колкото първоначалният опит, а повторният опит за операцията започва отново от първия запис.

Асинхронните операции се повтарят многократно, ако възникне грешка. В повечето случаи повторният опит за работа води до успех и работата може да продължи до завършване. В някои редки случаи повторният опит не решава проблема. Когато това се случи, асинхронната задача спира и администраторът и потребителят могат да отстранят проблема и да възобновят задачата от точката, в която е била поставена на пауза.

Често срещани причини за грешки при каскадни операции

Честите причини за неуспехи при обработката на каскадни операции включват:

  • Изключения от приставката
  • Изключения за сигурност

Изключения от приставката

Добавките се добавят към обработката на каскадни операции, за да предприемат конкретни действия, когато се правят промени в запис, като например изпращане на имейл или задействане на различна актуализация на други записи. Те могат да бъдат предоставени от трети страни или разработени вътрешно. Ако добавка генерира изключение, каскадна операция е неуспешна. В зависимост от причината за изключението, опитът може да реши проблема. Ако асинхронната каскадна задача е поставена на пауза поради неуспехи, проверете всички добавки, които са свързани с операциите, за да се уверите, че не генерират изключения. След като бъде фиксирана, работата може да бъде възобновена.

Изключения за сигурност

Изключенията за сигурност възникват, когато потребителят, който е изпълнил каскадната операция, няма достатъчно права да направи промяна в един или повече записи или потребителят е деактивиран или премахнат от системата.

Ако потребителят все още е в системата, проверете дали има необходимите привилегии за промяна на записите и дали има разрешение да изпълнява посочените действия. След като това бъде разрешено, възобновете работата.

Ако потребителят е бил деактивиран или премахнат от системата, повторното разрешаване или повторно добавяне на потребителя решава проблема и работата може да бъде възобновена. Ако обаче потребителят трябва да бъде изтрит или деактивиран или не трябва да има разрешения за действията или записите, заданието трябва да бъде отменено и рестартирано от някой с подходящи разрешения.

За всякакви други проблеми с неуспешни задачи се свържете с Microsoft поддръжката. Повече информация: Преглед на поддръжката

Отстраняване на проблеми с изтриването на файлове по време на каскадно сливане

Ако се сблъскате с операции с каскадно обединяване, тъй като файловете се изтриват по време на изпълнение на заданието, можете да пропуснете проверката на родителството. Това позволява обединяването ви да продължи, дори ако някой изтрие запис от набора, докато заданието работи във фонов режим. Когато изберете да обедините записи, в долната част на прозореца за обединяване изчистете отметката Родителство е разрешена по подразбиране. Премахнете отметката от това, за да игнорирате опцията за родителска проверка .

Диалогов прозорец Обединяване на записи.

Пример за сливане на запис

Представете си, че имате акаунти с връзка за контакт, която има връзка с поръчки. Искате да обедините два записа на акаунта.

Ако заданието се изпълнява успешно, обединяването присвоява всички свързани контакти и техните поръчки към целевия акаунт.

Ако по време на процеса на обединяване на записи друг потребител изтрие свързан запис на контакт, но все още съществуват записи за ред, свързани със записа на контакта, задачата за обединяване е неуспешна, защото липсва родител на дъщерен запис. Ако изберете да пропуснете родителската проверка по време на обединяването на записи, поръчките с липсващия запис на контакт се обединяват в записа на целевия акаунт. Към целевия акаунт обаче не се присвояват свързани записи за контакт и задачата завършва.

Обединяване, причиняващо заключване, което предотвратява други промени в достъпа

Операцията Каскадно сливане предоставя достъп на новия собственик на подчинената таблица. За да направи това, операцията Каскадно сливане осъществява достъп и прави промени в таблицата с основни обекти, които изискват заключване. Ако операцията за обединяване съдържа много записи (въз основа на каскадната връзка), това заключване може да бъде на място за продължителен период от време. Това може да доведе до грешка, ако операция се опита да предостави или отмени достъп до несвързан запис, докато сливането се изпълнява. Ако това се случи, опитайте да изпълните сливането в извънработно време, за да може блокирането да бъде намалено.

Вижте също

Общ преглед на релациите между таблици