Freigeben über


Leeren anderer auftragsbezogener Tabellen

Aktualisiert: 2009-04-30

Der Planning-Prozessdienst verarbeitet Datensätze in der AsyncWorkItems-Tabelle. Diese Tabelle enthält die Arbeitselemente, die vom Planning-Prozessdienst verarbeitet wurden, und die Elemente, die sich noch in der Warteschlange befinden und vom Planning-Prozessdienst verarbeitet werden.

Diese Tabellendaten und die zugehörige Tabelle (AsyncWorkItemStatusHistory) werden durch keinen Planning-Prozess gelöscht. Der Datenbankadministrator sollte die Größe der AsyncWorkItems-Tabelle überwachen und sie regelmäßig leeren. Zu diesem Zweck ist eine gespeicherte Prozedur verfügbar.

Es gibt mehrere andere Tabellen, die auf die Datensätze in der AsyncWorkItems-Tabelle verweisen. Die gespeicherte Prozedur bsp_AsyncWorkItemsPurge, die in der Anwendungsdatenbank installiert ist, löscht nur die Datensätze, auf die von keiner dieser Tabellen mehr verwiesen wird und die älter als ein bestimmtes Datum sind.

AsyncWorkItemID in der AsyncWorkItems-Tabelle ist ein Fremdschlüssel, auf den die folgenden Tabellen verweisen:

  • RecurrentCycle (AutoStartTimerID),

  • CycleInstances (AutoStartTimerID, AutoEndTimerID),

  • Assignments (AutoStartTimerID, AutoEndTimerID),

  • JobInstances (WorkItemID)

Die AsyncWorkItems-Tabelle und die zugehörigen Tabellendaten können nur gelöscht werden, wenn keines der Elemente auf AsyncWorkItemID verweist und wenn ItemEndDatetime älter ist als ein bestimmter Datums-/Zeitwert.

Der folgende Code ist das Skript zur Ausführung dieser gespeicherten Prozedur. Dieses Beispiel veranschaulicht das Löschen aller AsyncWorkItems-Datensätze (und der zugehörigen AsyncWorkItemStatusHistory-Tabelle), bei denen die ItemEndDatetime-Spalte älter ist als 2007 und auf die keine anderen Tabellen verweisen.

DECLARE @RET int
EXEC @RET = bsp_AsyncWorkItemsPurge @PurgeDatetime = ‘12/31/2006’
SELECT @RET

Siehe auch