Automation Suite
2022.10
falso
Execução de manutenção de banco de dados - Automation Suite 2022.10
Imagem de fundo do banner
Logotipo
Guia de instalação do Automation Suite
Última atualização 12 de fev de 2024

Fazendo a manutenção do banco de dados

É importante manter seus bancos de dados livres de desordem. Para fazer isso, recomendamos:

Usando a Solução de Manutenção do SQL Server

A Solução de Manutenção do SQL Server é um conjunto de scripts que permite que você execute backups, verificações de integridade, e manutenção de índices e estatísticas em todas as edições do Microsoft SQL Server, a partir da versão 2005. Para obter detalhes, consulte este projeto do GitHub.

Fazendo backup do banco de dados

Recomendamos a implementação de backups regulares do banco de dados do SQL Server, como por exemplo backups semanais completos ou diários incrementais.

Além disso, recomendamos o uso do procedimento armazenado DatabaseBackup que é criado usando o script neste local.

Excluindo dados antigos periodicamente

Recursos compartilhados do Suite

Crie um banco de dados separado no qual pode salvar itens antes de excluí-los. Esse banco de dados funciona como um arquivamento para os itens que você pode precisar armazenar por determinadas razões, como auditorias.

  1. Crie um novo banco de dados chamado, por exemplo, UiPathArchives:
    create database UiPathArchivescreate database UiPathArchives
  2. Crie as seguintes tabelas de backup:
    1. ArchiveAuditEvent com a mesma estrutura que a tabela AuditEvent:
      SELECT * INTO [UiPathArchives].[dbo].[ArchiveAuditEvent] from [accountmanagementdb].[adt].[AuditEvent] where 1 = 2SELECT * INTO [UiPathArchives].[dbo].[ArchiveAuditEvent] from [accountmanagementdb].[adt].[AuditEvent] where 1 = 2
  3. Arquive os dados:
    1. Arquive os registros de auditoria
      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

      Os dados antigos são copiados para esses arquivamentos antes de serem excluídos ao usar a consulta abaixo.

  4. Exclua dados da tabela.
    Importante: antes de executar o script a seguir, certifique-se de adaptá-los ao seu ambiente.
    1. Eventos de auditoria
      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

Servidor de Identidade

Crie um banco de dados separado no qual pode salvar itens antes de excluí-los. Esse banco de dados funciona como um arquivamento para os itens que você pode precisar armazenar por determinadas razões, como auditorias.

  1. Crie um novo banco de dados chamado, por exemplo, UiPathIdentityArchives:
    create database UiPathIdentityArchivescreate database UiPathIdentityArchives
  2. Crie as seguintes tabelas de backup:
    1. ArchiveLoginAttempts com a mesma estrutura que a tabela UserLoginAttempts:
      select * into [UiPathIdentityArchives].[dbo].[ArchiveUserLoginAttempts] from [UiPath].[dbo].[UserLoginAttempts] where 1=2select * into [UiPathIdentityArchives].[dbo].[ArchiveUserLoginAttempts] from [UiPath].[dbo].[UserLoginAttempts] where 1=2

      Os dados antigos são copiados para esses arquivamentos antes de serem excluídos ao usar a consulta abaixo.

  3. Exclua dados da tabela.
    Importante: antes de executar o script a seguir, certifique-se de adaptá-los ao seu ambiente.
    1. Tentativas de login de usuário
      Para excluir tentativas de login mais antigas do que 60 dias, por exemplo, use a consulta abaixo. Isso pode ser feito manualmente ou agendado em uma tarefa do SQL Server.
      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

Limpeza de banco de dados

Os scripts a seguir substituem qualquer e todos os scripts de limpeza de banco de dados anteriores. Eles cobrem todas as tarefas de manutenção necessárias e podem ser configurados conforme necessário.

SQL script
Pré-requisitos
Isso é o que você precisa para poder executar o script CreateOrchestratorCleanupObjects.sql" id="1"/>:
  • Você deve ter acesso ao banco de dados de arquivo a partir do contexto de seu banco de dados do Orchestrator.

  • Você deve poder acessar o arquivo usando nomes de 3 partes, como Archive.dbo.QueueItemsTableArchive" id="1"/>.
Como usá-lo
1. Execute o script SQL CreateOrchestratorCleanupObjects.sql" id="1"/> para criar os seguintes objetos:
  • A tabela dbo.__CleanupLog" id="1"/>, que abriga os logs de execução.
  • O procedimento dbo.GetOrCreateArchiveTable" id="1"/>, que cria ou retorna a tabela de arquivo.
  • O procedimento dbo.RunOrchestratorCleanup" id="1"/>, que executa a exclusão e, opcionalmente, o arquivamento de dados antigos.
2. Execute dbo.RunOrchestratorCleanup com o arquivo de configuração XML de agendamento para realizar a limpeza. Para obter detalhes sobre o arquivo XML, consulte a seção Agendamento da limpeza abaixo.
Observação:

Você também pode usar o agente SQL Server para executar a limpeza.

Exemplo de script
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';
script do powershell

Isso é apropriado para situações em que você não pode usar o script SQL.

Observação:

O script PowerShell é compatível com o Powershell 5.1 e pode ser usado com runbooks de Automação do Azure.

Pré-requisitos
O script RunOrchestratorCleanup.ps1 deve poder se comunicar com essas duas strings de conexão:
  • SourceConnectionString" id="1"/> - essa é a string de conexão de banco de dados do Orchestrator.
  • DestinationConnectionString" id="1"/> - essa é a string de conexão de banco de dados de arquivo. Observe que o banco de dados de arquivo deve ser criado e configurado com antecedência.
Objetos que ele cria
  • A tabela dbo.__CleanupLog" id="1"/>, que abriga os logs de execução.
  • A tabela dbo.__CleanupIds" id="1"/>, que armazena um lote temporário de IDs que precisam ser limpos.
Limitações
O script abre duas conexões: uma ao banco de dados do Orchestrator (via SourceConnectionString" id="1"/>) e outra ao banco de dados de arquivo (via DestinationConnectionString" id="2"/>). Dessa forma, nenhuma transação real está envolvida, pois os dados são copiados do Orchestrator para o arquivo, após o qual são excluídos do Orchestrator.

Isso significa que, se uma exceção for gerada em qualquer lugar entre as duas ações, fazendo com que o script seja reexecutado, os mesmos dados podem ser copiados novamente, levando a duplicatas no banco de dados de arquivo.

No entanto, como a exclusividade não é aplicada no banco de dados de arquivo, isso não leva a problemas.

Exemplo de script
.\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>'

Agendamento da limpeza

Você pode escolher quais dados limpar de seu banco de dados, quando e por quanto tempo a atividade de limpeza deve ser feita para cada execução, entre outras.

Para fazer isso, use o seguinte arquivo XML com o script SQL ou PowerShell. Ele é pré-configurado com nossos parâmetros recomendados, mas você pode editá-lo se quiser funcionalidades mais avançadas. Certifique-se de entender o que cada parâmetro faz antes de editar o script, pois isso pode ter consequências graves.

<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>

Mesmo que uma execução consiga limpar parcialmente uma ou algumas tabelas, as execuções subsequentes continuarão a limpeza, até que o script atinja todo o backlog. Portanto, é importante que você não accumule um backlog maior do que o script pode lidar. Se isso acontecer, considere agendar o script para ser executado com mais frequência.

Parâmetros do XML de limpeza

Parâmetro

Explicação

Valores possíveis

totalRunMaxMinutes

O número máximo de minutos que o script pode executar para todas as tabelas durante uma execução.

Deve ser maior que 1.

name

O nome da tabela que contém os dados que você deseja excluir.

Exemplo: QueueItems

runMaxMinutes

O número máximo de minutos que o script pode executar para uma tabela específica durante uma execução.

Importante:

O tempo que você define aqui às vezes pode ser executado por mais alguns minutos.

Além disso, totalRunMaxMinutes" id="1"/> tem precedência e sempre será aplicado, mesmo que você defina esse parâmetro como -1" id="2"/>.
-1: o script será executado por um número ilimitado de minutos.
0: o script não será executado para essa tabela específica.
>0 (ou seja, um número escolhido por você): o número máximo de minutos que o script executará.

idColumn

O ID da coluna que contém os dados que você deseja excluir.

Exemplo: Id" id="1"/> da tabela QueueItems" id="2"/>

dateTimeColumn

Isso difere dependendo do tipo de dados.

Isso é usado em combinação com daysOld" id="1"/>.
Exemplo: CreationTime" id="1"/> para QueueItems" id="2"/>

additionalFilter

Qualquer instrução SQL válida para um filtro.

Isso pode ser deixado vazio.

Exemplo: Status IN (2, 3, 4, 5, 6)" id="1"/>. Isso está incluído no arquivo XML recomendado por nós.
daysOld

Permite que você mantenha um certo número de dias de dados.

Isso é usado em combinação com dateTimeColumn" id="1"/>.
Isso deve ser definido como um mínimo de 2" id="1"/>.
Exemplo: configuração desse parâmetro para 5" id="1"/> mantém todos os dados que têm 5 dias.

batchSize

O número de linhas de tabela a serem excluídas em uma iteração.

Importante:

Isso não é usado para tabelas em que chaves estrangeiras são definidas.

Exemplo: configurar esse parâmetro como 50" id="1"/> para que a tabela QueueItems" id="2"/> exclua 50 itens dessa tabela específica.
forceCascade

Permite que você execute o script para tabelas em que chaves estrangeiras são definidas.

Importante:
O exemplo já usa forceCascade" id="1"/> para as tabelas em que é necessário. Portanto, você não precisa alterá-lo.
0: não em cascata.
1: cascata. Por exemplo, definir essa opção para a tabela QueueItems processará as tabelas QueueItemEvents e QueueItemComments.
shouldArchive

Permite que você escolha se deseja arquivar os dados.

0: não arquivar.
1: arquivar.
Scripts SQL e PowerShell comparados

Recurso

SQL scriptscript do powershell
XML de limpeza

Ambos usam a lógica descrita na seção Agendamento da limpeza.

Log de execução

Ambos criam uma tabela dbo.__CleanupLogs" id="1"/> para armazenar os logs da execução.
Você pode consultar os logs de uma execução usando SELECT * FROM dbo.__CleanupLog WHERE ExecutionId = '<execution_id>' ORDER BY Id" id="1"/>.
Você pode verificar se uma execução continha erros usando SELECT * FROM dbo.__CleanupLog WHERE ExecutionId = '<execution_id>' AND IsError = 1" id="1"/>.
O parâmetro ExecutionId" id="1"/> é gerado com cada execução de qualquer um desses scripts.

Tabela de arquivo

A tabela de arquivo não contém índices, chaves estrangeiras ou colunas de identificação.

As colunas do tipo Carimbo de data/hora não são arquivadas.

Nome da tabela de arquivo

Os nomes seguem a mesma lógica e incluem uma string baseada no esquema de tabela.

Lote de IDs a serem arquivados/excluídos

Armazenado em uma tabela temporária.

Armazenado na tabela dbo.__CleanupIds" id="1"/>.

Transaction

Uma única transação é executada para cada lote, durante o qual os dados são arquivados e excluídos.

O tamanho do lote, ou seja, o número de linhas de tabela a serem processadas, é definido no arquivo XML, por meio do parâmetro batchSize" id="1"/>.

SqlBulkCopy é usado para copiar os dados.

Não há nenhuma transação única executada para arquivamento e exclusão.

Ícone de suporte e serviços
Obtenha a ajuda que você precisa
Ícone do UiPath Academy
Aprendendo RPA - Cursos de automação
Ícone do Fórum do UiPath
Fórum da comunidade da Uipath
Logotipo branco da Uipath
Confiança e segurança
© 2005-2024 UiPath. All rights reserved.