Automation Suite
2023.10
False
Bannerhintergrundbild
Automation Suite unter Linux – Installationsanleitung
Letzte Aktualisierung 19. April 2024

Durchführen einer Datenbankwartung

Es ist wichtig, dass Sie Ihre Datenbanken frei von Stördaten halten. Hierfür empfehlen wir Folgendes:

Verwenden der SQL Server-Wartungslösung

Die SQL Server-Wartungslösung ist eine Reihe von Skripten, mit denen Sie Sicherungen, Integritätsprüfungen und Index- sowie Statistikwartung auf allen Editionen von Microsoft SQL Server ab der Version 2005 ausführen können. Weitere Informationen finden Sie in diesem GitHub-Projekt.

Sichern der Datenbank

Wir empfehlen, dass Sie reguläre Sicherungen der SQL Server-Datenbank implementieren, beispielsweise wöchentliche Sicherungen oder tägliche inkrementelle Sicherungen.

Außerdem empfehlen wir, dass Sie die gespeicherte Prozedur DatabaseBackup verwenden, die mithilfe des Skripts an diesem Speicherort erstellt wird.

Periodisches Löschen alter Daten

Gemeinsame Suite-Funktionen

Erstellen Sie eine separate Datenbank, in der Sie Elemente speichern, bevor Sie sie löschen. Diese Datenbank fungiert als Archiv für die Elemente, die Sie möglicherweise aus bestimmten Gründen speichern müssen, z. B. Audits.

  1. Erstellen Sie eine neue Datenbank mit beispielsweise dem Namen UiPathArchives:
    create database UiPathArchivescreate database UiPathArchives
  2. Erstellen Sie die folgenden Sicherungstabellen:
    1. ArchiveAuditEvent mit der gleichen Struktur wie die AuditEvent-Tabelle:
      SELECT * INTO [UiPathArchives].[dbo].[ArchiveAuditEvent] from [accountmanagementdb].[adt].[AuditEvent] where 1 = 2SELECT * INTO [UiPathArchives].[dbo].[ArchiveAuditEvent] from [accountmanagementdb].[adt].[AuditEvent] where 1 = 2
  3. Archiven Sie die Daten:
    1. Archivieren Sie die Prüfungsdatensätze
      DECLARE @NumberOfDaysToKeep INT
      DECLARE @CurrentDate DATETIME
      
      -- Specify the number of days
      SET @NumberOfDaysToKeep = 60
      -- Archive the list of audit event records that you want to delete
      SET @CurrentDate = GetDate()
      BEGIN TRANSACTION
      INSERT INTO [UiPathArchives].[dbo].[ArchiveAuditEvent]
      SELECT
      [Id],[CreatedOn],[Version],[OrganizationId],[Source],[Category],[Action],[IsUserEvent],
      [UserId],[FullName],[Email],[DetailsVersion],[Details],[OperationId]
      FROM [adt].[AuditEvent]
      WHERE DateDiff(day, CreatedOn, @CurrentDate) > @NumberOfDaysToKeep
      -- Delete the audit events
      DELETE FROM [adt].[AuditEvent]
      WHERE EXISTS (SELECT 1 FROM [UiPathArchives].[dbo].[ArchiveAuditEvent] WHERE Id = [adt].[AuditEvent].[Id])
      COMMIT TRANSACTIONDECLARE @NumberOfDaysToKeep INT
      DECLARE @CurrentDate DATETIME
      
      -- Specify the number of days
      SET @NumberOfDaysToKeep = 60
      -- Archive the list of audit event records that you want to delete
      SET @CurrentDate = GetDate()
      BEGIN TRANSACTION
      INSERT INTO [UiPathArchives].[dbo].[ArchiveAuditEvent]
      SELECT
      [Id],[CreatedOn],[Version],[OrganizationId],[Source],[Category],[Action],[IsUserEvent],
      [UserId],[FullName],[Email],[DetailsVersion],[Details],[OperationId]
      FROM [adt].[AuditEvent]
      WHERE DateDiff(day, CreatedOn, @CurrentDate) > @NumberOfDaysToKeep
      -- Delete the audit events
      DELETE FROM [adt].[AuditEvent]
      WHERE EXISTS (SELECT 1 FROM [UiPathArchives].[dbo].[ArchiveAuditEvent] WHERE Id = [adt].[AuditEvent].[Id])
      COMMIT TRANSACTION

      Alte Daten werden in diese Archive kopiert, bevor sie gelöscht werden, wenn die unten genannte Abfrage verwendet wird.

  4. Löschen Sie Daten aus der Tabelle.
    Wichtig: Passen sie das folgende Skript an Ihre Umgebung an, bevor Sie es ausführen.
    1. Prüfungsereignisse
      declare @NumberOfDaysToKeep int
      declare @CurrentDate datetime
      
      -- Specify the number of days
      SET @NumberOfDaysToKeep = 60
      -- Create temporary table with the list of audit event records that you want to delete
      SET @CurrentDate = GetDate()
      SELECT
      [Id],[CreatedOn],[Version],[OrganizationId],[Source],[Category],[Action],[IsUserEvent],
      [UserId],[FullName],[Email],[DetailsVersion],[Details],[OperationId]
      INTO #TempAuditRecordsToDelete
      FROM [adt].[AuditEvent]
      WHERE DateDiff(day, CreatedOn, @CurrentDate) > @NumberOfDaysToKeep
      -- Review the audit event records to be deleted
      SELECT * FROM #TempAuditRecordsToDelete
      -- Delete the audit events
      BEGIN TRANSACTION
      DELETE FROM [adt].[AuditEvent]
      WHERE EXISTS (SELECT 1 FROM #TempAuditRecordsToDelete WHERE Id = [adt].[AuditEvent].[Id])
      DROP TABLE #TempAuditRecordsToDelete
      COMMIT TRANSACTIONdeclare @NumberOfDaysToKeep int
      declare @CurrentDate datetime
      
      -- Specify the number of days
      SET @NumberOfDaysToKeep = 60
      -- Create temporary table with the list of audit event records that you want to delete
      SET @CurrentDate = GetDate()
      SELECT
      [Id],[CreatedOn],[Version],[OrganizationId],[Source],[Category],[Action],[IsUserEvent],
      [UserId],[FullName],[Email],[DetailsVersion],[Details],[OperationId]
      INTO #TempAuditRecordsToDelete
      FROM [adt].[AuditEvent]
      WHERE DateDiff(day, CreatedOn, @CurrentDate) > @NumberOfDaysToKeep
      -- Review the audit event records to be deleted
      SELECT * FROM #TempAuditRecordsToDelete
      -- Delete the audit events
      BEGIN TRANSACTION
      DELETE FROM [adt].[AuditEvent]
      WHERE EXISTS (SELECT 1 FROM #TempAuditRecordsToDelete WHERE Id = [adt].[AuditEvent].[Id])
      DROP TABLE #TempAuditRecordsToDelete
      COMMIT TRANSACTION

Identity Server

Erstellen Sie eine separate Datenbank, in der Sie Elemente speichern, bevor Sie sie löschen. Diese Datenbank fungiert als Archiv für die Elemente, die Sie möglicherweise aus bestimmten Gründen speichern müssen, z. B. Audits.

  1. Erstellen Sie eine neue Datenbank mit beispielsweise dem Namen UiPathIdentityArchives:
    create database UiPathIdentityArchivescreate database UiPathIdentityArchives
  2. Erstellen Sie die folgenden Sicherungstabellen:
    1. ArchiveLoginAttempts mit der gleichen Struktur wie die UserLoginAttempts-Tabelle:
      select * into [UiPathIdentityArchives].[dbo].[ArchiveUserLoginAttempts] from [UiPath].[dbo].[UserLoginAttempts] where 1=2select * into [UiPathIdentityArchives].[dbo].[ArchiveUserLoginAttempts] from [UiPath].[dbo].[UserLoginAttempts] where 1=2

      Alte Daten werden in diese Archive kopiert, bevor sie gelöscht werden, wenn die unten genannte Abfrage verwendet wird.

  3. Löschen Sie Daten aus der Tabelle.
    Wichtig: Passen sie das folgende Skript an Ihre Umgebung an, bevor Sie es ausführen.
    1. Anmeldungsversuche von Benutzern
      Um Anmeldeversuche zu löschen, die älter als 60 Tage sind, verwenden Sie z. B. die Abfrage unten. Dies kann manuell oder geplant in einem SQL Server-Auftrag ausgeführt werden.
      declare @NumberOfDaysToKeep int
      set @NumberOfDaysToKeep = 60
      if OBJECT_ID('[UiPathIdentityArchives].[dbo].[UserLoginAttemps]') = NULL 
        begin select * into [UiPathIdentityArchives].[dbo].[UserLoginAttemps] from [identity].UserLoginAttempts where 1=2 end
      begin transaction
        set identity_insert [UiPathIdentityArchives].[dbo].[UserLoginAttemps] on
        insert into [UiPathIdentityArchives].[dbo].[UserLoginAttemps] ([Id],[PartitionId],[UserId],[UserNameOrEmailAddress],[ClientIpAddress],[ClientName],[BrowserInfo],[Result],[CreationTime],[AuthenticationProvider],[PartitionName])
          select [Id],[PartitionId],[UserId],[UserNameOrEmailAddress],[ClientIpAddress],[ClientName],[BrowserInfo],[Result],[CreationTime],[AuthenticationProvider],[PartitionName]
            from [identity].UserLoginAttempts where DateDiff(day, CreationTime, GetDate()) > @NumberOfDaysToKeep
        delete from [identity].UserLoginAttempts where DateDiff(day, CreationTime, GetDate()) > @NumberOfDaysToKeep
      commit transactiondeclare @NumberOfDaysToKeep int
      set @NumberOfDaysToKeep = 60
      if OBJECT_ID('[UiPathIdentityArchives].[dbo].[UserLoginAttemps]') = NULL 
        begin select * into [UiPathIdentityArchives].[dbo].[UserLoginAttemps] from [identity].UserLoginAttempts where 1=2 end
      begin transaction
        set identity_insert [UiPathIdentityArchives].[dbo].[UserLoginAttemps] on
        insert into [UiPathIdentityArchives].[dbo].[UserLoginAttemps] ([Id],[PartitionId],[UserId],[UserNameOrEmailAddress],[ClientIpAddress],[ClientName],[BrowserInfo],[Result],[CreationTime],[AuthenticationProvider],[PartitionName])
          select [Id],[PartitionId],[UserId],[UserNameOrEmailAddress],[ClientIpAddress],[ClientName],[BrowserInfo],[Result],[CreationTime],[AuthenticationProvider],[PartitionName]
            from [identity].UserLoginAttempts where DateDiff(day, CreationTime, GetDate()) > @NumberOfDaysToKeep
        delete from [identity].UserLoginAttempts where DateDiff(day, CreationTime, GetDate()) > @NumberOfDaysToKeep
      commit transaction

Orchestrator

Bereinigung der Datenbank

Die folgenden Skripts ersetzen alle vorherigen Skripts zur Datenbankbereinigung. Sie decken alle erforderlichen Wartungsaufgaben ab und können nach Bedarf konfiguriert werden.

Wichtig:

Sie können die Wartungsskripts der Orchestrator-Datenbank aus dem Customer Portal herunterladen.

SQL-Skript
Voraussetzungen
Sie benötigen Folgendes, um das Skript CreateOrchestratorCleanupObjects.sql ausführen zu können:
  • Sie müssen Zugriff auf die Archivdatenbank im Kontext Ihrer Orchestrator-Datenbank haben.

  • Sie müssen mit 3-teiligen Namen auf das Archiv zugreifen können, zum Beispiel Archive.dbo.QueueItemsTableArchive.
Verwendungsweise
1. Führen Sie das SQL-Skript CreateOrchestratorCleanupObjects.sql aus, um die folgenden Objekte zu erstellen:
  • Die Tabelle dbo.__CleanupLog, welche die Ausführungsprotokolle enthält.
  • Das Verfahren dbo.GetOrCreateArchiveTable, das die Archivtabelle erstellt oder zurückgibt.
  • Das Verfahren dbo.RunOrchestratorCleanup, welches das Löschen und optional auch das Archivieren alter Daten durchführt.
2. Führen Sie dbo.RunOrchestratorCleanup mit der Planungs-XML-Konfigurationsdatei aus, um die Bereinigung durchzuführen. Weitere Informationen zur XML-Datei finden Sie unten im Abschnitt Planen der Bereinigung.
Hinweis:

Sie können auch SQL Server Agent verwenden, um die Bereinigung durchzuführen.

Skriptbeispiel
DECLARE @cleanupConfigXml XML = 
'<CleanupConfig totalRunMaxMinutes="180">
	<Table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
</CleanupConfig>';

EXEC dbo.RunOrchestratorCleanup 
@cleanupConfigXml = @cleanupConfigXml,
@archiveDatabaseName = 'OrchestratorArchive';DECLARE @cleanupConfigXml XML = 
'<CleanupConfig totalRunMaxMinutes="180">
	<Table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
</CleanupConfig>';

EXEC dbo.RunOrchestratorCleanup 
@cleanupConfigXml = @cleanupConfigXml,
@archiveDatabaseName = 'OrchestratorArchive';
PowerShell-Skript

Das ist für Fälle geeignet, in denen Sie das SQL-Skript nicht verwenden können.

Hinweis:

Das PowerShell-Skript ist mit PowerShell 5.1 kompatibel und kann mit Azure Automation-Runbooks verwendet werden.

Voraussetzungen
Das Skript RunOrchestratorCleanup.ps1 muss mit diesen beiden Verbindungszeichenfolgen kommunizieren können:
  • SourceConnectionString – Das ist die Orchestrator-Datenbank-Verbindungszeichenfolge.
  • DestinationConnectionString – Das ist die Archivdatenbank-Verbindungszeichenfolge. Beachten Sie, dass die Archivdatenbank im Voraus erstellt und eingerichtet werden muss.
Erstellte Objekte
  • Die Tabelle dbo.__CleanupLog, welche die Ausführungsprotokolle enthält.
  • Die Tabelle dbo.__CleanupIds, in der ein temporärer Batch von IDs gespeichert wird, die bereinigt werden müssen.
Einschränkungen
Das Skript öffnet zwei Verbindungen: eine zur Orchestrator-Datenbank (über SourceConnectionString) und eine zur Archivdatenbank (über DestinationConnectionString). Es erfolgt keine tatsächliche Transaktion, da die Daten vom Orchestrator in das Archiv kopiert und anschließend aus dem Orchestrator gelöscht werden.

Wenn also eine Ausnahme irgendwo zwischen den beiden Aktionen ausgelöst wird, wodurch das Skript erneut ausgeführt wird, könnten dieselben Daten erneut kopiert werden, wodurch Duplikate in der Archivdatenbank entstehen.

Da die Eindeutigkeit in der Archivdatenbank jedoch nicht erzwungen wird, führt dies zu keinen Problemen.

Skriptbeispiel
.\RunOrchestratorCleanup 
-SourceConnectionString "Data Source=.;Initial Catalog=UiPath;User ID=sa;Password=******" 
-DestinationConnectionString "Data Source=.;Initial Catalog=<OrchestratorArchive>;User ID=sa;Password=******" 
-CleanupConfigXml '<CleanupConfig totalRunMaxMinutes="180"><Table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" /></CleanupConfig>'.\RunOrchestratorCleanup 
-SourceConnectionString "Data Source=.;Initial Catalog=UiPath;User ID=sa;Password=******" 
-DestinationConnectionString "Data Source=.;Initial Catalog=<OrchestratorArchive>;User ID=sa;Password=******" 
-CleanupConfigXml '<CleanupConfig totalRunMaxMinutes="180"><Table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" /></CleanupConfig>'

Planen der Bereinigung

Sie können unter anderem auswählen, welche Daten wann in Ihrer Datenbank bereinigt werden sollen und wie lange die Bereinigungsaktivität jeweils ausgeführt werden soll.

Verwenden Sie dazu die folgende XML-Datei entweder mit dem SQL- oder dem PowerShell-Skript. Sie ist mit unseren empfohlenen Parametern vorkonfiguriert, aber Sie können sie bei Bedarf bearbeiten, um erweiterte Funktionen zu erhalten. Vergewissern Sie sich, dass Sie die Funktionen der einzelnen Parameter verstehen, bevor Sie das Skript bearbeiten, da dies schwerwiegende Folgen haben kann.

<CleanupConfig totalRunMaxMinutes="180">
    <Table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
    <Table name="Jobs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="State IN (4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />        
    <Table name="Logs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="TimeStamp" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="1" />
    <Table name="AuditLogs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ExecutionTime" additionalFilter="" daysOld="365" batchSize="25" forceCascade="1" shouldArchive="1" />
    
    <Table name="Tasks" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="DeletionTime" additionalFilter="IsDeleted = 1" daysOld="180" batchSize="10" forceCascade="0" shouldArchive="1" />
    <Table name="QueueProcessingRecords" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ProcessingTime" additionalFilter="ReportType != -1" daysOld="30" batchSize="1000" forceCascade="0" shouldArchive="0" />
    <Table name="Sessions" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ReportingTime" additionalFilter="" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="0" />    
    
    <Table name="RobotLicenseLogs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="StartDate" additionalFilter="" daysOld="180" batchSize="1000" forceCascade="0" shouldArchive="0" />    
    <Table name="UserNotifications" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="0" />
    <Table name="TenantNotifications" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="0" />    
    <Table name="Ledger" runMaxMinutes="-1" idColumn="LedgerId" dateTimeColumn="CreationTime" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
    <Table name="LedgerDeliveries" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="LastUpdatedTime" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
    <Table name="__CleanupLog" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ExecutionTimeUtc" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
</CleanupConfig><CleanupConfig totalRunMaxMinutes="180">
    <Table name="QueueItems" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="Status IN (2, 3, 4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />
    <Table name="Jobs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="State IN (4, 5, 6)" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="1" />        
    <Table name="Logs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="TimeStamp" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="1" />
    <Table name="AuditLogs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ExecutionTime" additionalFilter="" daysOld="365" batchSize="25" forceCascade="1" shouldArchive="1" />
    
    <Table name="Tasks" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="DeletionTime" additionalFilter="IsDeleted = 1" daysOld="180" batchSize="10" forceCascade="0" shouldArchive="1" />
    <Table name="QueueProcessingRecords" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ProcessingTime" additionalFilter="ReportType != -1" daysOld="30" batchSize="1000" forceCascade="0" shouldArchive="0" />
    <Table name="Sessions" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ReportingTime" additionalFilter="" daysOld="180" batchSize="50" forceCascade="1" shouldArchive="0" />    
    
    <Table name="RobotLicenseLogs" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="StartDate" additionalFilter="" daysOld="180" batchSize="1000" forceCascade="0" shouldArchive="0" />    
    <Table name="UserNotifications" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="0" />
    <Table name="TenantNotifications" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="CreationTime" additionalFilter="" daysOld="90" batchSize="1000" forceCascade="0" shouldArchive="0" />    
    <Table name="Ledger" runMaxMinutes="-1" idColumn="LedgerId" dateTimeColumn="CreationTime" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
    <Table name="LedgerDeliveries" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="LastUpdatedTime" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
    <Table name="__CleanupLog" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="ExecutionTimeUtc" additionalFilter="" daysOld="7" batchSize="1000" forceCascade="0" shouldArchive="0" />
</CleanupConfig>

Auch wenn es mit einer Ausführung nur teilweise gelingt, eine oder mehrere Tabellen zu bereinigen, werden nachfolgende Ausführungen die Bereinigung fortsetzen, bis das Skript den gesamten Rückstand aufholt. Daher ist es wichtig, dass sich kein größerer Rückstand ansammelt, als das Skript verarbeiten kann. In diesem Fall sollten Sie eine häufigere Ausführung des Skripts planen.

XML-Parameter der Bereinigung

Parameter

Erklärung

Mögliche Werte

totalRunMaxMinutes

Die maximale Anzahl von Minuten einer Ausführung, während der das Skript für alle Tabellen ausgeführt werden darf.

Muss größer als 1 sein.

name

Der Name der Tabelle mit den Daten, die Sie löschen möchten.

Beispiel: QueueItems

runMaxMinutes

Die maximale Anzahl von Minuten einer Ausführung, während der das Skript für eine bestimmte Tabelle ausgeführt werden darf.

Wichtig:

Die hier festgelegte Zeit kann manchmal um ein paar Minuten überschritten werden.

Zudem hat totalRunMaxMinutes Vorrang und wird immer erzwungen, selbst wenn Sie diesen Parameter auf -1 festlegen.
-1: Das Skript wird für eine unbegrenzte Anzahl von Minuten ausgeführt.
0: Das Skript wird für diese spezifische Tabelle nicht ausgeführt.
>0 (also eine von Ihnen gewählte Zahl): Die maximale Anzahl von Minuten, für die das Skript ausgeführt wird.

idColumn

Die ID der Spalte, welche die Daten enthält, die Sie löschen möchten.

Beispiel: Id aus der Tabelle QueueItems

dateTimeColumn

Hängt vom Datentyp ab.

Wird in Kombination mit daysOld verwendet.
Beispiel: CreationTime für QueueItems

additionalFilter

Eine gültige SQL-Anweisung für einen Filter.

Kann leer gelassen werden.

Beispiel: Status IN (2, 3, 4, 5, 6). Ist in unserer empfohlenen XML-Datei enthalten.
daysOld

Ermöglicht es Ihnen, Daten für eine bestimmte Anzahl von Tagen aufzubewahren.

Dies wird in Kombination mit dateTimeColumn verwendet.
Muss mindestens auf 2 festgelegt werden.
Beispiel: Wenn Sie diesen Parameter auf 5 festlegen, werden alle Daten aufbewahrt, die 5 Tage alt sind.

batchSize

Die Anzahl der Tabellenzeilen, die in einer Iteration gelöscht werden sollen.

Wichtig:

Wird nicht für Tabellen verwendet, für die Fremdschlüssel definiert sind.

Beispiel: Wenn Sie diesen Parameter für die Tabelle QueueItems auf 50 festlegen, werden 50 Elemente aus dieser spezifischen Tabelle gelöscht.
forceCascade

Ermöglicht die Ausführung des Skripts für Tabellen, in denen Fremdschlüssel definiert sind.

Wichtig:
Das Beispiel verwendet bereits forceCascade für die Tabellen, in denen es erforderlich ist. Deshalb müssen Sie dies nicht ändern.
0: Nicht kaskadieren.
1: Kaskadieren. Wenn Sie diese Option beispielsweise für die Tabelle QueueItems festlegen, wird die Tabelle QueueItemEvents sowie die Tabelle QueueItemComments verarbeitet.
shouldArchive

Ermöglicht Ihnen die Auswahl, ob Sie die Daten archivieren möchten.

0: Nicht archivieren.
1: Archivieren.
SQL- und PowerShell-Skripte im Vergleich

Funktionen

SQL-SkriptPowerShell-Skript
Bereinigungs-XML

Beide verwenden die Logik, die im Abschnitt Planen der Bereinigung beschrieben ist.

Ausführungsprotokoll

Beide erstellen die Tabelle dbo.__CleanupLogs, um die Protokolle der Ausführung zu speichern.
Sie können die Protokolle einer Ausführung abfragen mit SELECT * FROM dbo.__CleanupLog WHERE ExecutionId = '<execution_id>' ORDER BY Id.
Ob eine Ausführung Fehler enthielt, können Sie überprüfen mit SELECT * FROM dbo.__CleanupLog WHERE ExecutionId = '<execution_id>' AND IsError = 1.
Der Parameter ExecutionId wird bei jeder Ausführung eines dieser Skripte generiert.

Archivtabelle

Die Archivtabelle enthält keine Indizes, Fremdschlüssel oder Identitätsspalten.

Spalten vom Typ Zeitstempel werden nicht archiviert.

Archivtabellenname

Die Namen folgen der gleichen Logik und enthalten eine Zeichenfolge, die auf dem Tabellenschema basiert.

Batch von IDs zum Archivieren/Löschen

Wird in einer temporären Tabelle gespeichert.

Wird in der Tabelle dbo.__CleanupIds gespeichert.

Transaction

Für jeden Batch wird eine einzelne Transaktion durchgeführt, bei der die Daten archiviert sowie gelöscht werden.

Die Batchgröße, also die Anzahl der zu verarbeitenden Tabellenzeilen, wird in der XML-Datei über den Parameter batchSize definiert.

SqlBulkCopy wird zum Kopieren der Daten verwendet.

Es wird keine einzelne Transaktion zum Archivieren und Löschen durchgeführt.

War diese Seite hilfreich?

Hilfe erhalten
RPA lernen – Automatisierungskurse
UiPath Community-Forum
UiPath Logo weiß
Vertrauen und Sicherheit
© 2005-2024 UiPath. All rights reserved.