automation-suite
2022.4
false
Importante :
A tradução automática foi aplicada parcialmente neste conteúdo.
Guia de instalação do Automation Suite
Last updated 4 de out de 2024

Limpeza do banco de dados do Orchestrator

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.

Importante:

Você pode baixar os scripts de manutenção de banco de dados do Orchestrator do Customer Portal.

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 executar 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" id="1"/> 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="Assets" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="DeletionTime" additionalFilter="IsDeleted = 1" daysOld="120" batchSize="50" forceCascade="1" 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="Assets" runMaxMinutes="-1" idColumn="Id" dateTimeColumn="DeletionTime" additionalFilter="IsDeleted = 1" daysOld="120" batchSize="50" forceCascade="1" 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" id="1"/>: o script será executado por um número ilimitado de minutos.

0" id="1"/>: o script não será executado para essa tabela específica.

>0" id="1"/> (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" id="1"/>: não em cascata.

1" id="1"/>: cascata. Por exemplo, definir essa opção para a tabela QueueItems" id="2"/> processará as tabelas QueueItemEvents" id="3"/> e QueueItemComments" id="4"/>.

shouldArchive

Permite que você escolha se deseja arquivar os dados.

0" id="1"/>: não arquivar.

1" id="1"/>: arquivo.

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.

Esta página foi útil?

Obtenha a ajuda que você precisa
Aprendendo RPA - Cursos de automação
Fórum da comunidade da Uipath
Uipath Logo White
Confiança e segurança
© 2005-2024 UiPath. Todos os direitos reservados.