Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När en ny instans av en tjänst skapas och tjänsten har definierat sql Workflow Instance Store-beteendet skapar tjänstvärden en första post för tjänstinstansen i instansarkivet. När tjänstinstansen sparas för första gången lagrar beteendet för SQL Workflow Instance Store det aktuella instanstillståndet tillsammans med ytterligare data som krävs för aktivering, återställning och kontroll.
Om en instans inte sparas efter att den första posten för instansen har skapats, sägs tjänstinstansen vara i ett icke-beständiga tillstånd. Alla beständiga tjänstinstanser kan efterfrågas och kontrolleras. Icke-bevarade tjänstinstanser kan varken efterfrågas eller kontrolleras. Om en icke-bevarad instans pausas på grund av ett ohanterat undantag kan den frågas men inte kontrolleras.
Varaktiga tjänstinstanser som ännu inte har sparats förblir i ett icke-beständiga tillstånd i följande scenarier:
Tjänstvärden kraschar innan instansen sparas för första gången. Den första posten för instansen finns kvar i instansarkivet. Instansen kan inte återställas. Om ett korrelerat meddelande kommer blir instansen aktiv igen.
Instansen upplever ett ohanterat undantag innan den bevaras för första gången. Följande scenarier uppstår
Om värdet för egenskapen UnhandledExceptionAction är inställt på Avbryt skrivs informationen om tjänstdistributionen till instansarkivet och instansen tas bort från minnet. Instansen är fortfarande i ett icke-beständiga tillstånd i beständighetsdatabasen.
Om värdet för egenskapen UnhandledExceptionAction är inställt på AbandonAndSuspend skrivs informationen om tjänstdistributionen till beständighetsdatabasen och instanstillståndet är inställt på Pausad. Instansen kan inte återupptas, avbrytas eller avslutas. Tjänstvärden kan inte läsa in instansen eftersom instansen inte har sparats ännu och därför är databasposten för instansen inte fullständig.
Om värdet för egenskapen UnhandledExceptionAction är inställt på Avbryt eller Avsluta skrivs information om tjänstdistributionen till instansarkivet och instanstillståndet är inställt på Slutfört.
Följande avsnitt innehåller exempelfrågor för att hitta icke-bevarade instanser i SQL-beständighetsdatabasen och för att ta bort dessa instanser från databasen.
Så här hittar du alla instanser som inte har sparats ännu
Följande SQL-fråga returnerar ID:t och skapandetiden för alla instanser som inte har sparats i beständighetsdatabasen ännu.
select InstanceId, CreationTime from [System.Activities.DurableInstancing].[Instances] where IsInitialized = 0;
För att hitta alla instanser som inte har sparats ännu och inte heller lästs in
Följande SQL-fråga returnerar ID och skapandetid för alla instanser som inte sparas och som inte heller läses in.
select InstanceId, CreationTime from [System.Activities.DurableInstancing].[Instances] where IsInitialized = 0 and CurrentMachine is NULL;
Så här hittar du alla inaktiverade instanser som inte har sparats ännu
Följande SQL-fråga returnerar ID, skapandetid, avstängningsorsak och undantagsnamn för avstängning för alla instanser som inte är bevarade och även i ett pausat tillstånd.
select InstanceId, CreationTime, SuspensionReason, SuspensionExceptionName from [System.Activities.DurableInstancing].[Instances] where IsInitialized = 0 and IsSuspended = 1;
Ta bort icke-bevarade instanser från beständighetsdatabasen
Du bör regelbundet kontrollera instansarkivet för icke-bevarade instanser och ta bort instanser från instansarkivet om du är säker på att instansen inte får ett korrelerat meddelande. Om instansen till exempel har funnits i databasen i flera månader och du vet att arbetsflödet vanligtvis har en livslängd på några dagar, skulle det vara säkert att anta att det här är en onitialiserad instans som hade kraschat.
I allmänhet är det säkert att ta bort icke-bevarade instanser som inte är pausade eller inte läses in. Du bör inte ta bort alla icke-bevarade instanser eftersom den här instansuppsättningen innehåller instanser som just har skapats men inte har sparats ännu. Du bör bara ta bort instanser som inte finns kvar eftersom arbetsflödestjänstvärden som hade instansen inläst orsakade ett undantag eller själva instansen orsakade ett undantag.
Varning
Om du tar bort icke-bevarade instanser från instansarkivet minskar storleken på arkivet och kan förbättra prestandan för butiksåtgärder.