Modificare il tempo di recupero di riferimento di un database (SQL Server)

Si applica a:SQL Server

Questo argomento descrive come impostare o modificare il tempo di recupero di riferimento di un database in SQL Server usando SQL Server Management Studio o Transact-SQL. Per impostazione predefinita, il tempo di recupero di riferimento è 60 secondi e il database usa checkpoint indiretti. Il tempo di recupero di riferimento stabilisce un limite superiore per il tempo di recupero per questo database.

Questa impostazione diventa effettiva immediatamente e non richiede un riavvio di SQL Server.

Nota

Il limite superiore specificato per un determinato database dall'impostazione del tempo di recupero di riferimento può essere superato se una transazione con esecuzione prolungata provoca tempi eccessivi di UNDO.

Limitazioni e restrizioni

Un carico di lavoro transazionale online su un database configurato per i checkpoint indiretti potrebbe subire una riduzione del livello delle prestazioni. I checkpoint indiretti assicurano che il numero di pagine dirty è inferiore a una determinata soglia, in modo che il recupero del database viene completato entro il tempo di recupero di riferimento. A differenza dei checkpoint indiretti, che usano il numero di pagine dirty, l'opzione di configurazione Intervallo di recupero usa il numero di transazioni per determinare il tempo di recupero.

Quando i checkpoint indiretti sono abilitati per un database che riceve un numero elevato di operazioni DML, il writer in background può iniziare a scaricare i buffer dirty su disco in modo intensivo per garantire che il tempo necessario per eseguire il recupero non superi il tempo di recupero di riferimento impostato per il database. Questo può causare in determinati sistemi ulteriore attività di I/O che può comportare un collo di bottiglia delle prestazioni se il sottosistema del disco opera al di sopra o in prossimità della soglia di I/O.

Autorizzazioni

È richiesta l'autorizzazione ALTER per il database.

Usare SQL Server Management Studio

  1. In Esplora oggetti connettersi a un'istanza del motore di database di SQL Server ed espanderla.

  2. Espandere il contenitore Database, quindi fare clic con il pulsante destro del mouse sul database da modificare e scegliere il comando Proprietà.

  3. Nella finestra di dialogo Proprietà database selezionare la pagina Opzioni.

  4. Nel campo Tempo di recupero di riferimento (secondi) del pannello Recupero specificare un numero di secondi come limite superiore del tempo di recupero per il database.

Usare Transact-SQL

  1. Connettersi all'istanza di SQL Server in cui risiede il database.

  2. Usare la seguente istruzione ALTER DATABASE, come indicato di seguito:

    TARGET_RECOVERY_TIME = tempo_recupero_riferimento { SECONDS | MINUTES }

    target_recovery_time
    A partire da SQL Server 2016 (13.x), il valore predefinito è 1 minuto. Se maggiore di 0 (impostazione predefinita per le versioni meno recenti), specifica il limite superiore per il tempo di recupero per il database specificato in caso di arresto anomalo.

    SECONDS
    Indica che target_recovery_time viene espresso come numero di secondi.

    MINUTI
    Indica che target_recovery_time viene espresso come numero di minuti.

    Nell'esempio seguente viene impostato il tempo di recupero di riferimento del database AdventureWorks2022 su 60 .

    ALTER DATABASE AdventureWorks2022 SET TARGET_RECOVERY_TIME = 60 SECONDS;
    

Vedi anche