Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Wanneer een nieuw exemplaar van een werkstroom wordt gemaakt dat de status in de SqlWorkflowInstanceStorewerkstroom behoudt, maakt de servicehost een vermelding voor die service in het exemplaararchief. Wanneer het werkstroomexemplaren vervolgens voor het eerst wordt bewaard, SqlWorkflowInstanceStore wordt de huidige exemplaarstatus opgeslagen. Als de werkstroom wordt gehost in de Windows Process Activation Service, worden de service-implementatiegegevens ook naar het exemplaararchief geschreven wanneer het exemplaar voor het eerst wordt opgeslagen.
Zolang de werkstroominstantie niet is vastgelegd, bevindt het zich in een niet-persistent status. In deze status kunnen de werkstroomexemplaren niet worden hersteld nadat een toepassingsdomein is gerecycled, een hostfout of een computerfout heeft plaatsgevonden.
De niet-persistente status
Duurzame werkstroomexemplaren die niet zijn behouden, blijven in de volgende gevallen in een niet-persistente status:
De servicehost crasht voordat de werkstroomexemplaren voor het eerst worden opgeslagen. ** De werkstroomexemplaren blijven in het exemplaararchief en worden niet hersteld. Als er een gecorreleerd bericht binnenkomt, wordt het werkstroomexemplaar weer actief.
De werkstroominstantie ondervindt een uitzondering voordat deze voor het eerst wordt bewaard. Afhankelijk van wat er door UnhandledExceptionAction wordt geretourneerd, vinden de volgende scenario's plaats:
UnhandledExceptionAction is ingesteld op Abort: Wanneer er een uitzondering optreedt, worden service-implementatiegegevens naar het exemplaararchief geschreven en wordt het werkstroomexemplaar uit het geheugen geladen. Het werkstroomexemplaar blijft in een niet-gepersistente toestand en kan niet opnieuw worden geladen.
UnhandledExceptionAction is ingesteld op Cancel of Terminate: wanneer er een uitzondering optreedt, worden service-implementatiegegevens naar het exemplaararchief geschreven en wordt de status van het activiteitsexemplaren ingesteld op Closed.
Om het risico op niet-geladen niet-persistente werkstroomexemplaren te minimaliseren, raden we u aan om de werkstroom vroeg in de levenscyclus te behouden.
Detectie en verwijdering van niet-persistente exemplaren
Er SqlWorkflowInstanceStore worden geen niet-persistente werkstroomexemplaren uit het exemplaararchief verwijderd. Ook worden geen eigenaren van verlopen vergrendelingen verwijderd waaraan niet-persistente werkstroominstanties zijn gekoppeld.
Het is raadzaam dat de beheerder het exemplaararchief periodiek controleert op niet-persistente exemplaren. Beheerders kunnen deze exemplaren verwijderen uit het exemplaararchief zolang ze weten dat deze werkstroom geen gecorreleerde berichten ontvangt. Als het exemplaar bijvoorbeeld al enkele maanden in de database is en het bekend is dat de werkstroom doorgaans een levensduur van meerdere dagen heeft, is het veilig om ervan uit te gaan dat dit een geïnitialiseerd exemplaar is dat is gecrasht.
Als u niet-persistente exemplaren wilt vinden in de SQL Workflow Instance Store, kunt u de volgende SQL-query's gebruiken:
Met deze query worden alle exemplaren gevonden die niet zijn persistent en wordt de id en aanmaaktijd (opgeslagen in UTC-tijd) geretourneerd.
select InstanceId, CreationTime from [System.Activities.DurableInstancing].[Instances] where IsInitialized = 0Met deze query worden alle exemplaren gevonden die niet zijn bewaard en die niet zijn geladen en worden de id en aanmaaktijd geretourneerd (opgeslagen in UTC-tijd) voor deze exemplaren.
select InstanceId, CreationTime from [System.Activities.DurableInstancing].[Instances] where IsInitialized = 0 and CurrentMachine is NULLMet deze query worden alle opgeschorte exemplaren gevonden die niet zijn gepersisteerd, en worden de ID, aanmaaktijd (opgeslagen in UTC-tijd), reden voor opschorting en uitzonderingsnaam geretourneerd.
select InstanceId, CreationTime, SuspensionReason, SuspensionExceptionName from [System.Activities.DurableInstancing].[Instances] where IsInitialized = 0 and IsSuspended = 1
Wees voorzichtig wanneer u niet-persistente exemplaren verwijdert. Over het algemeen is het veilig om niet-persistente exemplaren te verwijderen die zijn gemaakt door WorkflowServiceHost die zijn opgeschort of niet geladen. Deze specifieke exemplaren kunnen uit het archief worden verwijderd door ze uit de [System.Activities.DurableInstancing].[Instances] weergave te verwijderen met behulp van de volgende SQL-opdracht, waarbij de juiste exemplaar-id wordt vervangen.
delete [System.Activities.DurableInstancing].[Instances]
where InstanceId=’078a9bc4-ada5-4f9e-8cce-b0eb0009995f’
Waarschuwing
We raden u niet aan alle niet-persistente exemplaren te verwijderen, omdat dit exemplaren omvat die zojuist zijn gemaakt en nog niet zijn behouden.