Gestire il ripristino accelerato del database
si applica a: SQL Server 2019 (15.x) e versioni successive
Questo articolo illustra come abilitare e disabilitare il ripristino accelerato del database (ADR) con Transact-SQL (T-SQL) in SQL Server 2019 (15.x) e versioni successive, nonché come modificare il filegroup usato dall'archivio versioni permanente (PVS) da ADR.
Nota
Nel database SQL di Azure, nell'Istanza SQL gestita di Azure e nel database SQL in Microsoft Fabric, il ripristino accelerato del database (ADR) è sempre abilitato. Se si osservano problemi, ad esempio l'utilizzo elevato dello spazio di archiviazione tramite PVS o la pulizia lenta di ADR, vedere Monitorare e risolvere i problemi relativi al ripristino accelerato del database o contattare supporto Azure.
Utenti che possono trarre vantaggio dal ripristino accelerato del database
Molti clienti considerano il ripristino accelerato del database (ADR) una tecnologia preziosa per migliorare il tempo di ripristino del database.
Se i carichi di lavoro del database riscontrano spesso gli scenari seguenti, è possibile trarre vantaggio da ADR:
- Transazioni a esecuzione prolungata che non possono essere evitate. Ad esempio, nei casi in cui le transazioni a esecuzione prolungata sono a rischio di essere sottoposte a rollback, è possibile eseguire il rollback di ripristino accelerato del database.
- Transazioni attive che causano un aumento significativo del log delle transazioni.
- Ripristino di un database a esecuzione prolungata che influisce sulla disponibilità del database, ad esempio dopo un riavvio imprevisto di SQL Server o un rollback manuale delle transazioni.
Se l'applicazione usa un volume elevato di modifiche a riga singola nelle singole transazioni, il carico di lavoro potrebbe non essere ottimale per ADR. Prendere in considerazione l'invio in batch di modifiche nelle istruzioni su più righe, laddove possibile, ed evitare un volume elevato di transazioni DML di piccole dimensioni.
Abilitare ADR
AdR è disattivato per impostazione predefinita ed è disponibile a partire da SQL Server 2019 (15.x).
Usare il comando Transact-SQL (T-SQL) seguente per abilitare ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
È necessario un blocco esclusivo del database per abilitare o disabilitare ADR. Ciò significa che il comando ALTER DATABASE
viene bloccato fino a quando tutte le sessioni attive non sono più presenti e che tutte le nuove sessioni attendono dietro il comando ALTER DATABASE
. Se è importante completare l'operazione e rimuovere il blocco, è possibile usare la clausola di terminazione WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
per interrompere le sessioni attive nel database. Per altre informazioni, vedere opzioni ALTER DATABASE SET.
Disabilitare ADR
Usare il comando T-SQL seguente per disabilitare ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
Anche dopo la disabilitazione di ADR, potrebbero essere presenti versioni archiviate in PVS che il sistema deve ancora ripristinare logicamente fino al completamento di tutte le transazioni attive.
Cambia il gruppo di file PVS
Per impostazione predefinita, i dati dell'archivio versioni permanenti (PVS) si trova nel filegroup PRIMARY
. Se necessario, è possibile spostare il file PVS in un filegroup diverso. Ad esempio, potrebbe richiedere più spazio o un'archiviazione più veloce.
Per modificare il percorso del file pvS in un filegroup diverso, seguire questa procedura:
Creare il filegroup per PVS e aggiungere almeno un file di dati a questo filegroup. Ad esempio:
ALTER DATABASE [<db_name>] ADD FILEGROUP [VersionStoreFG]; GO ALTER DATABASE [<db_name>] ADD FILE ( NAME = N'VersionStoreFG', FILENAME = N'E:\DATA\VersionStore.ndf', SIZE = 8192 MB, FILEGROWTH = 64 MB ) TO FILEGROUP [VersionStoreFG];
Disabilitare ADR con il comando T-SQL seguente:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
Attendere che tutte le versioni archiviate in PVS vengano rimosse.
Per abilitare ADR usando una nuova ubicazione PVS, assicurarsi innanzitutto che tutte le informazioni sulla versione siano state eliminate dall'ubicazione PVS precedente. È possibile forzare la pulizia con la stored procedure sys.sp_persistent_version_cleanup:
EXEC sys.sp_persistent_version_cleanup [<db_name>];
La stored procedure
sys.sp_persistent_version_cleanup
è sincrona, il che significa che non si completerà fino a quando tutte le informazioni sulla versione non saranno state eliminate dall'attuale PVS. Al termine e supponendo che ADR sia disabilitato, è possibile verificare che le informazioni sulla versione vengano rimosse eseguendo una query sys.dm_tran_persistent_version_store_stats ed esaminando il valore dipersistent_version_store_size_kb
. Ad esempio:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
Quando il valore di
persistent_version_store_size_kb
è0
, è possibile riabilitare ADR e posizionare pvS nel nuovo filegroup.Abilitare ADR e specificare il nuovo percorso PVS con il comando T-SQL seguente:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
Monitorare le dimensioni del PVS
Dopo aver abilitato ADR in un database, monitorare le dimensioni dell'archivio delle versioni permanenti (PVS) e le prestazioni di pulizia PVS. Per altre informazioni, vedere Monitorare e risolvere i problemi relativi al ripristino accelerato del database.