Udostępnij za pośrednictwem


Przetwarzanie asynchroniczne transakcji kaskadowych

Niektóre transakcje można skonfigurować tak, aby były kaskadowane do wszystkich pokrewnych rekordów. Oznacza to, że zmiana w rekordzie nadrzędnym jest przetwarzana (kaskadowo) we wszystkich rekordach podrzędnych. Kaskadowe relacje są skonfigurowane na poziomie tabeli. Aby uzyskać więcej informacji o kaskadowych relacjach, zobacz temat Konfigurowanie zachowania kaskadowego relacji tabeli.

Tryby synchroniczne i asynchroniczne

Domyślnie operacje kaskadowe są wykonywane jako transakcja synchroniczne. W przypadku synchronicznej transakcji kaskadowej wszystkie rekordy objęte transakcją są identyfikowane przez system. W trakcie przetwarzania rekordy są blokowane przez system. Po wprowadzeniu wszystkich zmian rekordy są odblokowywane, a transakcja kończona.

Transakcje synchroniczne z dużą liczbą rekordów mogą powodować problemy z wydajnością w środowiskach, jeżeli długotrwałe transakcje kończą się niepowodzeniem z powodu przekroczenia limitów czasu serwera. Rekordy są blokowane, uniemożliwiając wykonywanie innych zadań i transakcji użytkowników, które wykorzystują te same rekordy. Ponadto długotrwałe transakcje mogą powodować zaległość oczekujących transakcji i żądań, co obniża wydajność systemu i może powodować przerwy w pracy.

Jeśli podczas wykonywania synchronicznych operacji kaskadowych w środowisku dochodzi do przekroczenia limitów czasu lub zmniejszenia wydajności, może to oznaczać, że w środowisku być może lepiej włączyć tryb asynchroniczny. Główne różnice między trybami opisano w poniższej tabeli.

Tryb synchroniczny Tryb asynchroniczny
Do czasu ukończenia operacji kaskadowej żadne inne zadania nie mogą być wykonywane w całym zestawie wybranych rekordów (bezpośrednio lub kaskadowo). W przypadku przypisywania, usuwania i scalania zmiany kaskadowe są grupowane, blokując tylko rekordy przetwarzane w ramach partii. Pozwala to na wykonywanie innych zadań podczas całej operacji kaskadowego wprowadzania zmian.
Po zakończeniu zadania wszystkie dane mają nowe, pożądane wartości. Podczas wykonywania zadania każda zakończona partia pokazuje pożądaną wartość. Oznacza to, że istnieje czas, w którym niektóre dane pokazują żądaną wartość, a niektóre pokazują oryginalną wartość, aż do zakończenia pełnej operacji. Takie zjawisko jest często nazywane „spójnością ostateczną”.
W razie błędu jednego rekordu wszystkie dane są wycofywane do pierwotnej wartości. Cofnięcie wymaga ponownej edycji wszystkich ukończonych rekordów, co zajmuje więcej czasu. Jeśli jedno zadanie zakończy się niepowodzeniem, jego próba jest ponawiana wiele razy. Jeśli zadanie nie może zostać zrealizowane, błąd jest rejestrowany w obszarze Zadania systemowe. Zauważ, że pomyślnie sfinalizowane rekordy zachowują nową wartość.
Jeśli jeden z rekordów na liście kaskadowej ma wartość inną niż oczekiwana, zadanie kończy się niepowodzeniem i zostaje wycofane. Załóżmy na przykład, że rekord początkowy należy do Właściciela 1, a operacja kaskadowa chce go zmienić na Właściciela 2. Jeśli jeden z dalszych, powiązanych rekordów zmienił się na Właściciel 3 lub zostanie usunięty przed wystąpieniem blokady, całe zadanie zostanie wycofane. W przypadku przypisywania operacja zawsze działa w trybie nadpisywania, zmieniając bieżącą wartość na nową wartość w oparciu o relację rodzic-dziecko. Nie występują błędy zadań spowodowanych niezgodnością z oryginalną wartością. W przypadku operacji usuwania w przypadku braku rekordu, który był częścią zestawu, wszystkie rekordy, które nie mają charakteru w tym punkcie, są traktowane jako ukończone. Użytkownik lub administrator może ponownie wykonać nieudane zadanie, co spowoduje ponowne obliczenie zadania w celu kontynuowania bez brakującego rekordu. W przypadku scalania, jeśli wystąpi problem z brakującym rekordem, zadanie jest ponawiane i wykonywane bez brakującego rekordu.

Tryb asynchroniczny

Gdy transakcja kaskadowa osiąga próg dla uwzględnionych rekordów, rekordy są przetwarzane asynchronicznie,

Działanie Threshold
Przypisywanie 1 000 rekordów
Delete 5,000 rekordów
Scalanie 1 000 rekordów

Śledzenie postępu operacji asynchronicznych

Administratorzy mogą monitorować przetwarzanie operacji asynchronicznych w obszarze Ustawienia.

  1. Zaloguj się w Centrum administracyjnym Power Platform.

  2. W obszarze nawigacji wybierz pozycję Środowiska. Następnie wybierz żądane środowisko.

  3. Wybierz kolejno opcje Ustawienia, rozwiń gałąź Inspekcja i dzienniki, a następnie wybierz pozycję Zadania systemowe.

  4. Operacje kaskadowe są wyświetlane w widoku Zadania systemowe.

    Widok operacji kaskadowych.

    Aby wyświetlić tylko operacje kaskadowe, w selektorze Widok wybierz opcję Operacje kaskadowe.

    Widok operacji kaskadowych w selektorze.

Operacje kaskadowe mają jeden z następujących stanów:

  • Ukończono: Wszystkie partie transakcji kaskadowej zostały zakończone pomyślnie.
  • W toku: Trwają prace kaskadowe.
  • Niepowodzenie: po wielu ponownych próbach niektóre zmiany kaskadowe zakończyły się niepowodzeniem.

Uwaga

Nie jest możliwe anulowanie asynchronicznego zadania kaskadowego. Należy zaczekać na jego zakończenie sygnalizowane stanem Zakończone lub Niepowodzenie.

Otwarcie operacji kaskadowej powoduje wyświetlenie następujących informacji:

  • Liczba ponowień prób w konkretnej transakcji.

  • Daty i godziny utworzenia i zakończenia operacji.

  • Kto utworzył zadanie.

  • Wszelkie komunikaty związane z zadaniem, takie jak przyczyny niepowodzenia lub wyjątki.

    Rekord operacji kaskadowej.

Które transakcje kaskadowe mogą być przetwarzane asynchronicznie?

Przypisywanie, usuwanie i scalanie transakcji kaskadowych może być przetwarzane asynchronicznie.

Uwaga

Inne transakcje, takie jak udostępnianie/nieudostępnianie, widok zbiorczy i ponowne rodzicielstwo, są obecnie analizowane pod kątem przetwarzania asynchronicznego.

Rozwiązywanie problemów dotyczących asynchronicznej operacji kaskadowej

Gdy synchroniczne zadania kaskadowe kończą się niepowodzeniem, zatrzymują się i wycofują wszystkie zmiany, tak aby żaden z rekordów nie zawierał żądanych zmian. Może to być czasochłonny proces, ponieważ wycofywanie może trwać tak długo, jak pierwotna próba, a ponowna próba operacji rozpoczyna się ponownie od pierwszego rekordu.

Operacje asynchroniczne ponawiają próbę wiele razy, jeśli wystąpi błąd. W większości przypadków ponowienie próby wykonania zadania zakończy się niemyślnie i zadanie będzie kontynuowane. W niektórych rzadkich przypadkach ponowna próba nie rozwiązuje problemu. W takim przypadku zadanie asynchroniczne zostaje wstrzymane, a administrator i użytkownik mogą rozwiązać problem i wznowić zadanie od punktu, w którym zostało wstrzymane.

Typowe przyczyny awarii operacji kaskadowych

Typowe przyczyny niepowodzeń podczas przetwarzania operacji kaskadowych to:

  • Wyjątki plug-in
  • Wyjątki zabezpieczeń

Wyjątki plug-in

Wtyczki plug-in są dodawane do przetwarzania operacji kaskadowych w celu podjęcia określonych akcji w momencie wprowadzenia zmian w rekordzie, takich jak wysyłanie wiadomości e-mail lub wyzwalanie innej aktualizacji w odniesieniu do innych rekordów. Mogą one zostać dostarczone przez strony trzecie lub utworzone we własnej lokalizacji. Jeśli wtyczka plug-in wygeneruje wyjątek, operacja kaskadowania nie powiedzie się. W zależności od przyczyny wyjątku ponowienie może pomóc w rozwiązaniu problemu. Jeśli zostało wstrzymane asynchroniczne zadanie kaskadowe z powodu błędów, należy sprawdzić poprawność wszystkich dodatków plug-in skojarzonych z operacjami w celu upewnienia się, że nie są one przyczyną generowania wyjątków. Po naprawie zadanie można wznowić.

Wyjątki zabezpieczeń

Wyjątki zabezpieczeń występują, kiedy użytkownik wykonujący operację kaskadową nie ma wystarczających uprawnień do zmiany jednego lub większej liczby rekordów lub gdy użytkownik jest wyłączony lub usuwany z systemu.

Jeśli użytkownik nadal znajduje się w systemie, należy sprawdzić, czy ma uprawnienia wymagane do modyfikowania rekordów i czy ma uprawnienia do wykonywania określonych działań. Po rozwiązaniu tego problemu wznów pracę.

Jeśli użytkownik został wyłączony lub usunięty z systemu, ponowne włączenie lub ponowne dodanie użytkownika rozwiązuje problem i zadanie może zostać wznowione. Jeśli jednak użytkownik musi być usunięty lub wyłączony albo nie ma uprawnień do wykonywania akcji lub rekordów, to zadanie powinno zostać anulowane i ponownie uruchomione przez użytkownika mającego odpowiednie uprawnienia.

W przypadku innych problemów z zadaniami, które zakończyły się niepowodzeniem, skontaktuj się z Microsoft pomocą techniczną. Więcej informacji: Przegląd pomocy technicznej

Rozwiązywanie problemów dotyczących usuwania plików podczas kaskadowego scalania

Jeśli podczas operacji kaskadowego scalania wystąpią problemy, w związku z czym podczas wykonywania zadania usuwane są pliki, można pominąć kontrolę nadrzędną. Pozwoli to na kontynuowanie scalania nawet wtedy, gdy użytkownik usunie rekord z zestawu w czasie, gdy zadanie działa w tle. Po wybraniu opcji scalania rekordów, w dolnej części okna scalania usuń zaznaczenie opcji Sprawdzenie rodzicielstwa jest domyślnie włączone. Usuń zaznaczenie tej opcji, aby zignorować sprawdzanie rodzicielstwa.

Okno dialogowe Scalanie rekordów.

Przykładowe Scalenie rekordów

Załóżmy, że istnieją konta z relacją do kontaktu, który ma związek z zamówieniami. Użytkownik chce scalić dwa rekordy klientów.

Jeśli zadanie zostanie wykonane pomyślnie, scalanie przypisze wszystkie powiązane kontakty i ich zamówienia do klienta docelowego.

Jeśli podczas procesu scalania rekordów inny użytkownik usunie powiązany rekord kontaktu, ale rekordy zamówień nadal istnieją powiązane z rekordem kontaktu, zadanie scalania nie powiedzie się, ponieważ brakuje rekordu nadrzędnego do rekordu podrzędnego. Jeśli zdecydujesz się pominąć sprawdzanie rodzica podczas scalania rekordów, zamówienia z brakującym rekordem kontaktu zostaną scalone z rekordem konta docelowego. Do konta docelowego nie są jednak przypisywane żadne powiązane rekordy kontaktów, a zadanie zostaje zakończone.

Scalanie powoduje blokady, które uniemożliwiają inne zmiany dostępu

Operacja Scalania kaskadowego zapewnia dostęp nowemu właścicielowi tabeli podrzędnej. W tym celu operacja Scalania kaskadowego uzyskuje dostęp do tabeli obiektów głównych i wprowadza w niej zmiany, które wymagają blokady. Jeśli operacja scalania zawiera wiele rekordów (odpowiednio do relacji kaskadowej), ta blokada może istnieć przez dłuższy czas. Może to spowodować błąd, jeśli operacja spróbuje przyznać lub cofnąć dostęp do niepowiązanego rekordu, gdy scalanie jest uruchomione. W takim przypadku spróbuj wykonać scalanie poza godzinami pracy, aby zmniejszyć uciążliwość blokowania.

Zobacz też

Omówienie relacji między tabelami