catalog.cleanup_server_log

Si applica a: SQL Server (tutte le versioni supportate) Integration Runtime SSIS in Azure Data Factory

Si applica a: SQL Server (tutte le versioni supportate)

Pulisce i log operazioni per portare il database SSISDB in uno stato che permette di modificare il valore della proprietà SERVER_OPERATION_ENCRYPTION_LEVEL.

Sintassi

catalog.cleanup_server_log  

Argomenti

No.

Valori del codice restituito

0 per esito positivo e 1 per esito negativo.

Set di risultati

No.

Autorizzazioni

Per questa stored procedure è necessaria una delle autorizzazioni seguenti:

  • Autorizzazioni READ ed EXECUTE per il progetto e, se applicabile, autorizzazioni READ per l'ambiente a cui si fa riferimento.

  • Appartenenza al ruolo del database ssis_admin.

  • Appartenenza al ruolo del server sysadmin.

Errori e avvisi

Questa stored procedure genera errori negli scenari seguenti:

  • Almeno una operazione è attiva nel database SSISDB.

  • Il database SSISDB non è in modalità utente singolo.

Commenti

In SQL Server 2012 Service Pack 2 è stata aggiunta la proprietà SERVER_OPERATION_ENCRYPTION_LEVEL alla tabella internal.catalog_properties. Per questa proprietà sono possibili due valori:

  • PER_EXECUTION (1) : il certificato e la chiave simmetrica usati per la protezione dei parametri e dei log di esecuzione riservati vengono creati per ogni esecuzione. Poiché i certificati e le chiavi vengono generati per ogni esecuzione, è possibile riscontrare problemi di prestazioni (deadlock, mancata riuscita di processi di manutenzione e così via) negli ambienti di produzione. Questa impostazione, tuttavia, offre un livello di sicurezza superiore rispetto all'altro valore (2).

  • PER_PROJECT (2) : il certificato e la chiave simmetrica usati per la protezione dei parametri riservati vengono creati per ogni progetto. PER_PROJECT (2) corrisponde all'impostazione predefinita. Questa impostazione garantisce prestazioni migliori rispetto al livello PER_EXECUTION, perché la chiave e il certificato vengono generati una volta per il progetto, anziché per ogni esecuzione.

Prima di modificare SERVER_OPERATION_ENCRYPTION_LEVEL da 2 a 1 o viceversa, è necessario eseguire catalog.cleanup_server_log. Prima di eseguire questa stored procedure, effettuare le operazioni seguenti:

  1. Assicurarsi che il valore della proprietà OPERATION_CLEANUP_ENABLED sia impostato su TRUE nella tabella catalog.catalog_properties (database SSISDB).

  2. Impostare il database di Integration Services (SSISDB) sulla modalità utente singolo. In SQL Server Management Studio avviare la finestra di dialogo Proprietà database per SSISDB, passare alla scheda Opzioni e impostare la proprietà Limitazione accesso sulla modalità utente singolo (SINGLE_USER). Dopo aver eseguito la stored procedure cleanup_server_log, riportare il valore della proprietà sul valore originale.

  3. Eseguire la stored procedure catalog.cleanup_server_log.

  4. A questo scopo, andare avanti e modificare il valore per la proprietà SERVER_OPERATION_ENCRYPTION_LEVEL nella tabella catalog.catalog_properties (database SSISDB).

  5. Eseguire la stored procedure catalog.cleanup_server_execution_keys per pulire le chiavi dei certificati dal database SSISDB. Il rilascio dei certificati e delle chiavi dal database SSISDB può richiedere molto tempo. È quindi necessario eseguire questa operazione periodicamente in orario non di punta.

    È possibile specificare l'ambito o il livello (di esecuzione o di progetto) e il numero di chiavi da eliminare. La dimensione predefinita del batch per l'eliminazione è 1000. Quando si imposta il livello su 2, le chiavi e i certificati vengono eliminati solo se i progetti associati sono stati eliminati.

Per altre informazioni, vedere l'articolo della Knowledge Base CORREZIONE: Problemi di prestazioni quando si usa SSISDB come archivio di distribuzione in SQL Server 2012

Esempio

L'esempio seguente chiama la stored procedure cleanup_server_log.

USE [SSISDB]  
GO  
  
DECLARE@return_value int  
EXEC@return_value = [internal].[cleanup_server_log]  
SELECT'Return Value' = @return_value  
GO