Partilhar via


Como limpar logs SSISDB automaticamente

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Depois de provisionar um tempo de execução de integração (IR) do Azure-SQL Server Integration Services (SSIS) no Azure Data Factory (ADF) ou Synapse Pipelines, você pode usá-lo para executar pacotes SSIS implantados em:

  • Catálogo SSIS (SSISDB) hospedado pelo servidor do Banco de Dados SQL do Azure/Instância Gerenciada (Modelo de Implantação de Projeto)
  • sistema de arquivos, Arquivos do Azure ou banco de dados do SQL Server (MSDB) hospedado pela Instância Gerenciada SQL do Azure (Modelo de Implantação de Pacote)

No Modelo de Implantação de Projeto, seu IR do Azure-SSIS implantará projetos SSIS no SSISDB, buscará pacotes SSIS para serem executados a partir do SSISDB e gravará os logs de execução do pacote novamente no SSISDB. O SSISDB também é usado para armazenar logs de trabalho e operação de IR do SSIS. Para gerenciar os logs acumulados, fornecemos propriedades SSISDB relevantes e procedimentos armazenados que podem ser invocados automaticamente na programação por meio do ADF, do Agente de Instância Gerenciada SQL do Azure ou dos Trabalhos do Banco de Dados Elástico.

Propriedades de limpeza de log e procedimentos armazenados do SSISDB

Para gerenciar logs de execução de pacotes SSIS, você pode configurar as propriedades de limpeza de log do SSISDB conectando-se ao SSISDB hospedado pelo servidor/Instância Gerenciada do Banco de Dados SQL do Azure usando o SQL Server Management Studio (SSMS), consulte Conectando-se ao SSISDB. Uma vez conectado, na janela Pesquisador de Objetos do SSMS, você pode expandir o nó Catálogos do Integration Services, clicar com o botão direito do mouse no subnó SSISDB e selecionar o item de menu Propriedades para abrir a caixa de diálogo Propriedades do Catálogo. Na caixa de diálogo Propriedades do catálogo, você pode encontrar as seguintes propriedades de limpeza de log do SSISDB:

  • Limpar logs periodicamente: habilita a limpeza de logs de execução de pacotes, por padrão definido como True.
  • Período de retenção (dias): especifica a idade máxima dos logs retidos (em dias), por padrão definido como 365 e os logs mais antigos são excluídos quando o procedimento armazenado SSISDB relevante é invocado.
  • Remover periodicamente versões antigas: Permite a limpeza de versões de projeto armazenadas, por padrão definido como True.
  • Número máximo de versões por projeto: especifica o número máximo de versões de projeto armazenadas, por padrão definidas como 10 e as versões mais antigas são excluídas quando o procedimento armazenado SSISDB relevante é invocado.

Propriedades de limpeza de log do SSISDB

Depois que as propriedades de limpeza de log do SSISDB estiverem configuradas, você poderá invocar o procedimento armazenado SSISDB relevante, [internal].[cleanup_server_retention_window_exclusive], para limpar os logs de execução do pacote SSIS.

Para limpar os logs de trabalho do SSIS, você pode invocar o procedimento armazenado SSISDB relevante, [internal].[cleanup_completed_jobs_exclusive]. O período de retenção é, por padrão, definido como 60 minutos e os logs mais antigos são excluídos quando o procedimento armazenado é invocado.

Para limpar os logs de operação do SSIS IR, você pode invocar o procedimento armazenado SSISDB relevante, [internal].[cleanup_expired_worker]. Por padrão, o período de retenção é definido como 168 horas e os logs mais antigos são excluídos quando o procedimento armazenado é invocado.

Esses procedimentos armazenados do SSISDB limpam diferentes tabelas do SSISDB:

Procedimentos armazenados do SSISDB Tabelas SSISDB para limpeza
[internal].[cleanup_server_retention_window_exclusive] [internal].[event_message_context_scaleout]
[internal].[event_messages_scaleout]
[internal].[executable_statistics]
[internal].[execution_component_phases]
[internal].[execution_data_statistics]
[internal].[execution_data_taps]
[internal].[execution_parameter_values]
[internal].[execution_parameter_values_noncatalog]
[internal].[execution_property_override_values]
[internal].[execution_property_override_values_noncatalog]
[internal].[executions]
[internal].[executions_noncatalog]
[internal].[extended_operation_info]
[internal].[operation_messages]
[internal].[operation_messages_scaleout]
[internal].[operation_permissions]
[internal].[operations]
[internal].[validations]
[internal].[cleanup_completed_jobs_exclusive] [internal].[job_worker_agents]
[internal].[jobs]
[internal].[tasks]
[internal].[cleanup_expired_worker] [internal].[worker_agents]

Esses procedimentos armazenados do SSISDB também podem ser invocados automaticamente no agendamento por meio do ADF, do Agente de Instância Gerenciada SQL do Azure ou dos Trabalhos de Banco de Dados Elástico.

Limpe os logs do SSISDB automaticamente via ADF ou Synapse Pipelines

Independentemente de usar o servidor de banco de dados SQL do Azure/Instância Gerenciada para hospedar o SSISDB, você sempre pode usar o ADF para limpar os logs do SSISDB automaticamente de acordo com o cronograma. Para fazer isso, você pode preparar uma atividade Executar Pacote SSIS no pipeline do ADF com um pacote incorporado contendo uma única Tarefa Executar SQL que invoca os procedimentos armazenados SSISDB relevantes. Veja o exemplo 4) em nosso blog: Execute qualquer SQL em qualquer lugar em 3 etapas fáceis com o SSIS no Azure Data Factory.

Limpeza de log SSISDB via ADF

Para o parâmetro SQLStatementSource , você pode inserir EXEC internal.cleanup_server_retention_window_exclusive para limpar os logs de execução do pacote SSIS.

Para limpar os logs de tarefas do SSIS, você pode adicionar EXEC internal.cleanup_completed_jobs_exclusive [@minutesToKeep=’Number of minutes to set as retention period’].

Para limpar os logs de operação do SSIS IR, você pode adicionar EXEC internal.cleanup_expired_worker [@hoursToKeep=’Number of hours to set as retention period’] .

Depois que o pipeline do ADF estiver preparado, você poderá anexar um gatilho de agendamento para executá-lo periodicamente, consulte Como acionar o pipeline do ADF em um cronograma.

Limpe os logs do SSISDB automaticamente por meio do Agente de Instância Gerenciada SQL do Azure

Se você usar a Instância Gerenciada SQL do Azure para hospedar o SSISDB, também poderá usar seu orquestrador/agendador de tarefas interno, o Agente de Instância Gerenciada do SQL do Azure, para limpar os logs do SSISDB automaticamente dentro do cronograma. Se o SSISDB for criado recentemente em sua Instância Gerenciada SQL do Azure, também criamos um trabalho T-SQL chamado Trabalho de Manutenção do Servidor SSIS no Agente de Instância Gerenciada SQL do Azure para limpar especificamente os logs de execução do pacote SSIS. Por padrão, ele está desativado e configurado com uma programação para ser executado diariamente. Se você quiser habilitá-lo e/ou reconfigurar sua agenda, poderá fazê-lo conectando-se à sua Instância Gerenciada SQL do Azure usando o SSMS. Uma vez conectado, na janela Pesquisador de Objetos do SSMS, você pode expandir o nó SQL Server Agent, expandir o subnó Trabalhos e clicar duas vezes no Trabalho de Manutenção do Servidor SSIS para habilitá-lo/reconfigurá-lo.

Limpeza de log do SSISDB por meio do Agente de Instância Gerenciada SQL do Azure

Se o seu Agente de Instância Gerenciada SQL do Azure ainda não tiver o Trabalho de Manutenção do Servidor SSIS criado sob ele, você poderá adicioná-lo manualmente executando o seguinte script T-SQL em sua Instância Gerenciada SQL do Azure.

USE msdb
IF EXISTS(SELECT * FROM sys.server_principals where name = '##MS_SSISServerCleanupJobLogin##')
   DROP LOGIN ##MS_SSISServerCleanupJobLogin##

DECLARE @loginPassword nvarchar(256)
SELECT @loginPassword = REPLACE (CONVERT( nvarchar(256), CRYPT_GEN_RANDOM( 64 )), N'''', N'''''')
EXEC ('CREATE LOGIN ##MS_SSISServerCleanupJobLogin## WITH PASSWORD =''' +@loginPassword + ''', CHECK_POLICY = OFF')
ALTER LOGIN ##MS_SSISServerCleanupJobLogin## DISABLE

USE master
GRANT VIEW SERVER STATE TO ##MS_SSISServerCleanupJobLogin##

USE SSISDB
IF EXISTS (SELECT name FROM sys.database_principals WHERE name = '##MS_SSISServerCleanupJobUser##')
    DROP USER ##MS_SSISServerCleanupJobUser##
CREATE USER ##MS_SSISServerCleanupJobUser## FOR LOGIN ##MS_SSISServerCleanupJobLogin##
GRANT EXECUTE ON [internal].[cleanup_server_retention_window_exclusive] TO ##MS_SSISServerCleanupJobUser##
GRANT EXECUTE ON [internal].[cleanup_server_project_version] TO ##MS_SSISServerCleanupJobUser##

USE msdb
EXEC dbo.sp_add_job
    @job_name = N'SSIS Server Maintenance Job', 
    @enabled = 0,
    @owner_login_name = '##MS_SSISServerCleanupJobLogin##',
    @description = N'Runs every day. The job removes operation records from the database that are outside the retention period and maintains a maximum number of versions per project.'

DECLARE @IS_server_name NVARCHAR(30)
SELECT @IS_server_name = CONVERT(NVARCHAR, SERVERPROPERTY('ServerName'))
EXEC sp_add_jobserver  @job_name = N'SSIS Server Maintenance Job',
                       @server_name = @IS_server_name

EXEC sp_add_jobstep
    @job_name = N'SSIS Server Maintenance Job',
    @step_name = N'SSIS Server Operation Records Maintenance',
    @subsystem = N'TSQL',
    @command = N'
       DECLARE @role int
       SET @role = (SELECT [role] FROM [sys].[dm_hadr_availability_replica_states] hars INNER JOIN [sys].[availability_databases_cluster] adc ON hars.[group_id] = adc.[group_id] WHERE hars.[is_local] = 1 AND adc.[database_name] =''SSISDB'')
       IF DB_ID(''SSISDB'') IS NOT NULL AND (@role IS NULL OR @role = 1)
              EXEC [SSISDB].[internal].[cleanup_server_retention_window_exclusive]',
    @database_name = N'msdb',
    @on_success_action = 3,
    @retry_attempts = 3,
    @retry_interval = 3;

EXEC sp_add_jobstep
    @job_name = N'SSIS Server Maintenance Job',
    @step_name = N'SSIS Server Max Version Per Project Maintenance',
    @subsystem = N'TSQL',
    @command = N'
       DECLARE @role int
       SET @role = (SELECT [role] FROM [sys].[dm_hadr_availability_replica_states] hars INNER JOIN [sys].[availability_databases_cluster] adc ON hars.[group_id] = adc.[group_id] WHERE hars.[is_local] = 1 AND adc.[database_name] =''SSISDB'')
       IF DB_ID(''SSISDB'') IS NOT NULL AND (@role IS NULL OR @role = 1)
              EXEC [SSISDB].[internal].[cleanup_server_project_version]',
    @database_name = N'msdb',
    @retry_attempts = 3,
    @retry_interval = 3;

EXEC sp_add_jobschedule
    @job_name = N'SSIS Server Maintenance Job',
    @name = 'SSISDB Scheduler',
    @enabled = 1,
    @freq_type = 4, /*daily*/
    @freq_interval = 1,/*every day*/
    @freq_subday_type = 0x1,
    @active_start_date = 20001231,
    @active_end_date = 99991231,
    @active_start_time = 0,
    @active_end_time = 120000

Você também pode configurar o Trabalho de Manutenção do Servidor SSIS existente ou modificar o script T-SQL acima para limpar adicionalmente os logs de operação de trabalho/IR do SSIS invocando os procedimentos armazenados SSISDB relevantes.

Limpe os logs do SSISDB automaticamente por meio de trabalhos do Elastic Database

Se você usar o servidor do Banco de Dados SQL do Azure para hospedar o SSISDB, ele não terá um orquestrador/agendador de tarefas interno, portanto, deverá usar um componente externo, por exemplo, ADF (veja acima) ou Trabalhos de Banco de Dados Elástico (consulte o restante desta seção), para limpar os logs do SSISDB automaticamente de acordo com o cronograma.

Trabalhos de Banco de Dados Elástico é um serviço do Azure que pode automatizar e executar trabalhos em um banco de dados ou grupo de bancos de dados. Você pode agendar, executar e monitorar esses trabalhos usando o portal do Azure, Azure PowerShell, T-SQL ou APIs REST. Use Trabalhos de Banco de Dados Elástico para invocar os procedimentos armazenados relevantes do SSISDB para limpeza de log uma vez ou em uma agenda. Você pode escolher o intervalo de agendamento com base no uso de recursos do SSISDB para evitar a carga pesada do banco de dados.

Para obter mais informações, consulte Gerenciar grupos de bancos de dados com trabalhos de banco de dados elástico.

As seções a seguir descrevem como invocar os procedimentos armazenados SSISDB relevantes, [internal].[cleanup_server_retention_window_exclusive]//[internal].[cleanup_completed_jobs_exclusive][internal].[cleanup_expired_worker]que removem logs SSISDB que estão fora de seus períodos de retenção específicos.

Configurar trabalhos de banco de dados elástico usando o Azure PowerShell

Importante

Usar esse recurso do Azure do PowerShell requer o AzureRM módulo instalado. Este é um módulo mais antigo disponível apenas para o Windows PowerShell 5.1 que não recebe mais novos recursos. Os Az módulos e AzureRM não são compatíveis quando instalados para as mesmas versões do PowerShell. Se você precisar de ambas as versões:

  1. Desinstale o módulo Az de uma sessão do PowerShell 5.1.
  2. Instale o módulo AzureRM a partir de uma sessão do PowerShell 5.1.
  3. Baixe e instale o PowerShell Core 6.x ou posterior.
  4. Instale o módulo Az em uma sessão do PowerShell Core.

Os scripts do Azure PowerShell a seguir criam um novo Trabalho Elástico que invoca o procedimento armazenado de limpeza de log SSISDB selecionado. Para obter mais informações, consulte Criar um agente de trabalho elástico usando o PowerShell.

Criar parâmetros

# Parameters needed to create your job database
param(
$ResourceGroupName = $(Read-Host "Please enter an existing resource group name"),
$AgentServerName = $(Read-Host "Please enter the name of an existing Azure SQL Database server, for example myjobserver, to hold your job database"),
$SSISDBLogCleanupJobDB = $(Read-Host "Please enter a name for your job database to be created in the given Azure SQL Database server"),
$StoredProcName = $(Read-Host "Please enter the name of SSISDB log clean-up stored procedure to be invoked by your job (internal.cleanup_server_retention_window_exclusive/internal.cleanup_completed_jobs_exclusive/internal.cleanup_expired_worker)"), 

# Your job database should be a clean, empty S0 or higher service tier. We set S0 as default.
$PricingTier = "S0",

# Parameters needed to create your Elastic Job agent
$SSISDBLogCleanupAgentName = $(Read-Host "Please enter a name for your Elastic Job agent"),

# Parameters needed to create credentials in your job database for connecting to SSISDB
$PasswordForSSISDBCleanupUser = $(Read-Host "Please provide a new password for the log clean-up job user to connect to SSISDB"),

# Parameters needed to create the login and user for SSISDB
$SSISDBServerEndpoint = $(Read-Host "Please enter the name of target Azure SQL Database server that contains SSISDB, for example myssisdbserver") + '.database.windows.net',
$SSISDBServerAdminUserName = $(Read-Host "Please enter the target server admin username for SQL authentication"),
$SSISDBServerAdminPassword = $(Read-Host "Please enter the target server admin password for SQL authentication"),
$SSISDBName = "SSISDB",

# Parameters needed to set the job schedule for invoking SSISDB log clean-up stored procedure
$RunJobOrNot = $(Read-Host "Please indicate whether you want to run your job that cleans up SSISDB logs outside their retention period immediately (Y/N). Make sure the specific retention period is set properly before running the following scripts as deleted logs cannot be recovered."),
$IntervalType = $(Read-Host "Please enter the interval type for SSISDB log clean-up schedule: Year, Month, Day, Hour, Minute, Second are supported."),
$IntervalCount = $(Read-Host "Please enter the count of interval type for SSISDB log clean-up schedule."),

# The start time for SSISDB log clean-up schedule is set to current time by default. 
$StartTime = (Get-Date)

Invoque o procedimento armazenado de limpeza de log do SSISDB

# Install the latest PowerShell PackageManagement module that PowerShellGet v1.6.5 depends on
Find-Package PackageManagement -RequiredVersion 1.1.7.2 | Install-Package -Force

# You may need to restart your PowerShell session
# Install the latest PowerShellGet module that adds the -AllowPrerelease flag to Install-Module
Find-Package PowerShellGet -RequiredVersion 1.6.5 | Install-Package -Force

# Install AzureRM.Sql preview cmdlets side by side with the existing AzureRM.Sql version
Install-Module -Name AzureRM.Sql -AllowPrerelease -Force

# Sign in to your Azure account
Connect-AzureRmAccount

# Create your job database for defining SSISDB log clean-up job and tracking the job history
Write-Output "Creating a blank SQL database to be used as your job database ..."
$JobDatabase = New-AzureRmSqlDatabase -ResourceGroupName $ResourceGroupName -ServerName $AgentServerName -DatabaseName $SSISDBLogCleanupJobDB -RequestedServiceObjectiveName $PricingTier
$JobDatabase

# Enable Elastic Database Jobs preview in your Azure subscription
Register-AzureRmProviderFeature -FeatureName sqldb-JobAccounts -ProviderNamespace Microsoft.Sql

# Create your Elastic Job agent
Write-Output "Creating your Elastic Job agent..."
$JobAgent = $JobDatabase | New-AzureRmSqlElasticJobAgent -Name $SSISDBLogCleanupAgentName
$JobAgent

# Create job credentials in your job database for connecting to SSISDB in target server
Write-Output "Creating job credentials for connecting to SSISDB..."
$JobCredSecure = ConvertTo-SecureString -String $PasswordForSSISDBCleanupUser -AsPlainText -Force
$JobCred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList "SSISDBLogCleanupUser", $JobCredSecure
$JobCred = $JobAgent | New-AzureRmSqlElasticJobCredential -Name "SSISDBLogCleanupUser" -Credential $JobCred

# Create the job user login in master database of target server
Write-Output "Grant permissions on the master database of target server..."
$Params = @{
  'Database' = 'master'
  'ServerInstance' = $SSISDBServerEndpoint
  'Username' = $SSISDBServerAdminUserName
  'Password' = $SSISDBServerAdminPassword
  'OutputSqlErrors' = $true
  'Query' = "CREATE LOGIN SSISDBLogCleanupUser WITH PASSWORD = '" + $PasswordForSSISDBCleanupUser + "'"
}
Invoke-SqlCmd @Params

# Create SSISDB log clean-up user from login in SSISDB and grant it permissions to invoke SSISDB log clean-up stored procedure
Write-Output "Grant appropriate permissions on SSISDB..."
$TargetDatabase = $SSISDBName
$CreateJobUser = "CREATE USER SSISDBLogCleanupUser FROM LOGIN SSISDBLogCleanupUser"
$GrantStoredProcedureExecution = "GRANT EXECUTE ON " + $StoredProcName + " TO SSISDBLogCleanupUser" 

$TargetDatabase | ForEach-Object -Process {
  $Params.Database = $_
  $Params.Query = $CreateJobUser
  Invoke-SqlCmd @Params
  $Params.Query = $GrantStoredProcedureExecution
  Invoke-SqlCmd @Params
}

# Create your target group that includes only SSISDB to clean up
Write-Output "Creating your target group that includes only SSISDB to clean up..."
$SSISDBTargetGroup = $JobAgent | New-AzureRmSqlElasticJobTargetGroup -Name "SSISDBTargetGroup"
$SSISDBTargetGroup | Add-AzureRmSqlElasticJobTarget -ServerName $SSISDBServerEndpoint -Database $SSISDBName 

# Create your job to invoke SSISDB log clean-up stored procedure
Write-Output "Creating your job to invoke SSISDB log clean-up stored procedure..."
$JobName = "CleanupSSISDBLog"
$Job = $JobAgent | New-AzureRmSqlElasticJob -Name $JobName -RunOnce
$Job

# Add your job step to invoke SSISDB log clean-up stored procedure
Write-Output "Adding your job step to invoke SSISDB log clean-up stored procedure..."
$SqlText = "EXEC " + $StoredProcName 
$Job | Add-AzureRmSqlElasticJobStep -Name "Step to invoke SSISDB log clean-up stored procedure" -TargetGroupName $SSISDBTargetGroup.TargetGroupName -CredentialName $JobCred.CredentialName -CommandText $SqlText

# Run your job to immediately invoke SSISDB log clean-up stored procedure once
if ($RunJobOrNot -eq 'Y')
{
Write-Output "Invoking SSISDB log clean-up stored procedure immediately..."
$JobExecution = $Job | Start-AzureRmSqlElasticJob
$JobExecution
}

# Schedule your job to invoke SSISDB log clean-up stored procedure periodically, deleting SSISDB logs outside their retention period
Write-Output "Starting your schedule to invoke SSISDB log clean-up stored procedure periodically..."
$Job | Set-AzureRmSqlElasticJob -IntervalType $IntervalType -IntervalCount $IntervalCount -StartTime $StartTime -Enable

Configurar trabalhos de banco de dados elástico usando T-SQL

Os scripts T-SQL a seguir criam um novo Trabalho Elástico que invoca o procedimento armazenado de limpeza de log SSISDB selecionado. Para obter mais informações, consulte Usar o T-SQL para criar e gerenciar trabalhos de banco de dados elástico.

  1. Identifique uma camada de serviço S0/superior vazia do Banco de Dados SQL do Azure ou crie uma nova para seu banco de dados de trabalho. Em seguida, crie um Agente de Trabalho Elástico no portal do Azure.

  2. No banco de dados de tarefas, crie credenciais para se conectar ao SSISDB no servidor de destino.

    -- Connect to the job database specified when creating your job agent.
    -- Create a database master key if one doesn't already exist, using your own password.
    CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<EnterStrongPasswordHere>';
    
    -- Create credentials for SSISDB log clean-up.
    CREATE DATABASE SCOPED CREDENTIAL SSISDBLogCleanupCred WITH IDENTITY = 'SSISDBLogCleanupUser', SECRET = '<EnterStrongPasswordHere>'; 
    
  3. Defina seu grupo-alvo que inclua apenas SSISDB para limpeza.

    -- Connect to your job database.
    -- Add your target group.
    EXEC jobs.sp_add_target_group 'SSISDBTargetGroup'
    
    -- Add SSISDB to your target group
    EXEC jobs.sp_add_target_group_member 'SSISDBTargetGroup',
    @target_type = 'SqlDatabase',
    @server_name = '<EnterSSISDBTargetServerName>',
    @database_name = 'SSISDB'
    
    -- View your recently created target group and its members.
    SELECT * FROM jobs.target_groups WHERE target_group_name = 'SSISDBTargetGroup';
    SELECT * FROM jobs.target_group_members WHERE target_group_name = 'SSISDBTargetGroup';
    
  4. Crie o usuário de limpeza de log do SSISDB a partir do login no SSISDB e conceda-lhe permissões para invocar o procedimento armazenado de limpeza de log do SSISDB. Para obter orientações detalhadas, consulte Gerenciar logins.

    -- Connect to the master database of target server that hosts SSISDB 
    CREATE LOGIN SSISDBLogCleanupUser WITH PASSWORD = '<strong_password>';
    
    -- Connect to SSISDB
    CREATE USER SSISDBLogCleanupUser FROM LOGIN SSISDBLogCleanupUser;
    GRANT EXECUTE ON '<internal.cleanup_server_retention_window_exclusive/internal.cleanup_completed_jobs_exclusive/internal.cleanup_expired_worker>' TO SSISDBLogCleanupUser 
    
  5. Crie seu trabalho e adicione sua etapa de trabalho para invocar o procedimento armazenado de limpeza de log do SSISDB.

    -- Connect to your job database.
    -- Add your job to invoke the relevant SSISDB log clean-up stored procedure.
    EXEC jobs.sp_add_job @job_name='CleanupSSISDBLog', @description='Remove SSISDB logs outside their specific retention period'
    
    -- Add your job step to invoke the relevant SSISDB log clean-up stored procedure
    EXEC jobs.sp_add_jobstep @job_name='CleanupSSISDBLog',
    @command=N'<EXEC internal.cleanup_server_retention_window_exclusive/EXEC internal.cleanup_completed_jobs_exclusive/EXEC internal.cleanup_expired_worker>',
    @credential_name='SSISDBLogCleanupCred',
    @target_group_name='SSISDBTargetGroup'
    
  6. Antes de continuar, certifique-se de definir o período de retenção específico corretamente. Os logs do SSISDB fora desse período serão excluídos e não poderão ser recuperados. Em seguida, você pode executar seu trabalho imediatamente para iniciar a limpeza de log do SSISDB.

    -- Connect to your job database.
    -- Run your job immediately to invoke SSISDB log clean-up stored procedure.
    declare @je uniqueidentifier
    exec jobs.sp_start_job 'CleanupSSISDBLog', @job_execution_id = @je output
    
    -- Watch SSISDB log clean-up results 
    select @je
    select * from jobs.job_executions where job_execution_id = @je
    
  7. Opcionalmente, você pode excluir logs SSISDB fora de seu período de retenção em uma agenda. Configure os parâmetros do trabalho da seguinte maneira.

    -- Connect to your job database.
    EXEC jobs.sp_update_job
    @job_name='CleanupSSISDBLog',
    @enabled=1,
    @schedule_interval_type='<EnterIntervalType(Month,Day,Hour,Minute,Second)>',
    @schedule_interval_count='<EnterDetailedIntervalValue>',
    @schedule_start_time='<EnterProperStartTimeForSchedule>',
    @schedule_end_time='<EnterProperEndTimeForSchedule>'
    

Monitorar o trabalho de limpeza de log do SSISDB usando o portal do Azure

Você pode monitorar o trabalho de limpeza de log do SSISDB no portal do Azure. Para cada execução, você pode ver seu status, hora de início e hora de término.

Monitorar o trabalho de limpeza de log do SSISDB no portal do Azure

Monitorar o trabalho de limpeza de log do SSISDB usando o T-SQL

Você também pode usar o T-SQL para exibir o histórico de execução do trabalho de limpeza de log do SSISDB.

-- Connect to your job database.
-- View all SSISDB log clean-up job executions.
SELECT * FROM jobs.job_executions WHERE job_name = 'CleanupSSISDBLog' 
ORDER BY start_time DESC

-- View all active executions.
SELECT * FROM jobs.job_executions WHERE is_active = 1
ORDER BY start_time DESC

Para gerenciar e monitorar seu IR do Azure-SSIS, consulte os seguintes artigos.