Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pl-PL: Po utworzeniu nowego wystąpienia przepływu pracy, które utrwala swój stan w SqlWorkflowInstanceStore, host usługi tworzy wpis dla tej usługi w magazynie wystąpień. Następnie, gdy instancja przepływu pracy jest po raz pierwszy utrwalana, SqlWorkflowInstanceStore przechowuje jej bieżący stan. Jeśli przepływ pracy jest hostowany w usłudze aktywacji procesów systemu Windows, dane wdrożenia usługi są również zapisywane w magazynie wystąpień, gdy wystąpienie jest utrwalane po raz pierwszy.
Dopóki instancja przepływu pracy nie zostanie zapisana, znajduje się w stanie nietrwałym. W tym stanie nie można odzyskać wystąpienia przepływu pracy po odtworzeniu domeny aplikacji, awarii hosta lub awarii komputera.
Stan nieutrwalony
Trwałe wystąpienia przepływu pracy, które nie zostały utrwalone, pozostają w stanie nieutrwalonym w następujących przypadkach:
Host usługi ulega awarii, zanim instancja przepływu pracy zostanie zapisana po raz pierwszy. Wystąpienie przepływu pracy pozostaje w magazynie wystąpień i nie jest przywracane. Jeśli zostanie wyświetlony skorelowany komunikat, wystąpienie przepływu pracy ponownie stanie się aktywne.
Wystąpienie przepływu pracy napotka wyjątek, zanim zostanie utrwalone po raz pierwszy. W zależności od zwróconego UnhandledExceptionAction, występują następujące scenariusze:
UnhandledExceptionAction jest ustawiona na Abort: Gdy wystąpi wyjątek, informacje o wdrożeniu usługi są zapisywane w magazynie wystąpień, a wystąpienie przepływu pracy jest usuwane z pamięci. Wystąpienie przepływu pracy pozostaje w stanie nietrwałym i nie można go ponownie załadować.
UnhandledExceptionAction jest ustawiony na Cancel lub Terminate: W przypadku wystąpienia wyjątku informacje o wdrożeniu usługi są zapisywane w magazynie wystąpień, a stan instancji działania zostaje ustawiony na Closed.
Aby zminimalizować ryzyko napotkania niezaładowanych nietrwałych wystąpień przepływu pracy, zalecamy utrwalanie przepływu pracy we wczesnej fazie jego cyklu życia.
Wykrywanie i usuwanie nietrwałych wystąpień
Obiekt SqlWorkflowInstanceStore nie usuwa żadnych nietrwałych wystąpień przepływu pracy z magazynu wystąpień. Nie usuwa również żadnych wygasłych właścicieli blokad, którzy mają skojarzone z nimi nietrwałe wystąpienia przepływu pracy.
Zalecamy, aby administrator okresowo sprawdzał magazyn wystąpień pod kątem niezapisywanych wystąpień. Administratorzy mogą usuwać te wystąpienia z magazynu wystąpień, o ile wiedzą, że ten przepływ pracy nie będzie otrzymywać skorelowanych komunikatów. Na przykład, jeśli wystąpienie jest obecne w bazie danych przez kilka miesięcy, a wiadomo, że przepływ pracy zwykle trwa kilka dni, można założyć z dużym prawdopodobieństwem, że było to zainicjowane wystąpienie, które uległo awarii.
Aby znaleźć wystąpienia nietrwałe w magazynie wystąpień przepływu pracy SQL, możesz użyć następujących zapytań SQL:
To zapytanie znajduje wszystkie wystąpienia, które nie zostały utrwalone, i zwraca identyfikator i czas tworzenia (przechowywany w czasie UTC) dla nich.
select InstanceId, CreationTime from [System.Activities.DurableInstancing].[Instances] where IsInitialized = 0To zapytanie znajduje wszystkie wystąpienia, które nie zostały utrwalone i które nie zostały załadowane, i zwraca identyfikator i czas tworzenia (przechowywany w czasie UTC) dla nich.
select InstanceId, CreationTime from [System.Activities.DurableInstancing].[Instances] where IsInitialized = 0 and CurrentMachine is NULLTo zapytanie znajduje wszystkie wstrzymane wystąpienia, które nie zostały utrwalone, i zwraca identyfikator, czas tworzenia (przechowywany w czasie UTC), przyczynę zawieszenia i nazwę wyjątku dla nich.
select InstanceId, CreationTime, SuspensionReason, SuspensionExceptionName from [System.Activities.DurableInstancing].[Instances] where IsInitialized = 0 and IsSuspended = 1
Należy zachować ostrożność podczas usuwania nietrwałych wystąpień. Ogólnie rzecz biorąc, usunięcie tymczasowych wystąpień utworzonych przez WorkflowServiceHost, które są zawieszone lub niezaładowane, jest bezpieczne. Te konkretne przypadki można usunąć ze sklepu, usuwając je z widoku [System.Activities.DurableInstancing].[Instances] przy użyciu następującego polecenia SQL, zastępując właściwy identyfikator wystąpienia.
delete [System.Activities.DurableInstancing].[Instances]
where InstanceId=’078a9bc4-ada5-4f9e-8cce-b0eb0009995f’
Ostrzeżenie
Nie zalecamy usuwania wszystkich nietrwałych wystąpień, ponieważ obejmuje to wystąpienia, które zostały właśnie utworzone i nie zostały jeszcze utrwalone.