Condividi tramite


Aggiungere un buffer di log permanente a un database

Si applica a:SQL Server

Questo argomento descrive come aggiungere e rimuovere un buffer di log permanente in un database in SQL Server 2016 (13.x) e versioni successive usando Transact-SQL.

Autorizzazioni

È richiesta l'autorizzazione ALTER per il database.

Configurare un dispositivo con memoria persistente (Linux)

Per configurare un dispositivo con memoria persistente in Linux.

Configurare un dispositivo con memoria persistente (Windows)

Per configurare un dispositivo con memoria persistente in Windows.

Aggiungere un buffer di log permanente a un database

Il volume o il punto di montaggio per il nuovo file di log deve essere formattato con DAX abilitato (NTFS) o montato con l'opzione DAX (XFS/EXT4).

Usare la sintassi seguente per aggiungere un buffer di log permanente a un database esistente. La sintassi varia a seconda della versione di SQL Server.

Aggiungere un buffer di log permanente in SQL Server 2017 (14.x) e versioni successive

ALTER DATABASE [DB] SET PERSISTENT_LOG_BUFFER = ON (DIRECTORY_NAME = 'path-to-directory-on-a-DAX-volume');

Ad esempio:

ALTER DATABASE WideWorldImporters SET PERSISTENT_LOG_BUFFER = ON (DIRECTORY_NAME = 'F:\SQLTLog');

Il nome del buffer del file di log persistente viene generato automaticamente. Le dimensioni del file sono sempre di 20 megabyte.

Aggiungere un buffer di log permanente in SQL Server 2016 (13.x)

ALTER DATABASE [DB] ADD LOG FILE
(
NAME = [DAXlogLogicalName],
FILENAME = 'path-to-log-file-on-a-DAX-volume',
SIZE = 20 MB
);

Ad esempio:

ALTER DATABASE WideWorldImporters ADD LOG FILE
(
NAME = wwi_log2, 
FILENAME = 'F:\SQLTLog\wwi_log2.pldf',
SIZE = 20 MB
);

Il file di buffer di log nel volume DAX verrà ridimensionato a 20 megabyte indipendentemente dalle dimensioni specificate con il comando ALTER DATABASE ADD LOG FILE.

Rimuovere un buffer di log permanente da un database

Per rimuovere in modo sicuro un buffer di log persistente, il database deve essere inserito in modalità utente singolo per svuotare il buffer di log persistente.

Quando si rimuove un buffer di log permanente, il file del buffer di log su disco viene eliminato.

La sintassi varia a seconda della versione di SQL Server.

Rimuovere il buffer di log persistente in SQL Server 2017 (14.x) e versioni successive

ALTER DATABASE [DB] SET PERSISTENT_LOG_BUFFER = OFF;

Ad esempio:

ALTER DATABASE WideWorldImporters SET PERSISTENT_LOG_BUFFER = OFF;

Rimuovere il buffer di log permanente in SQL Server 2016 (13.x)

ALTER DATABASE [DB] SET SINGLE_USER;
ALTER DATABASE [DB] REMOVE FILE [DAXlogLogicalName];
ALTER DATABASE [DB] SET MULTI_USER;

Ad esempio:

ALTER DATABASE WideWorldImporters SET SINGLE_USER;
ALTER DATABASE WideWorldImporters REMOVE FILE wwi_log2;
ALTER DATABASE WideWorldImporters SET MULTI_USER;

Limiti

Transparent Data Encryption (TDE) non è compatibile con il buffer di log persistente.

I gruppi di disponibilità possono usare questa caratteristica solo nelle repliche secondarie a causa della necessità, da parte di un agente di lettura log, di una semantica di scrittura standard del log nel database primario. Tuttavia, è necessario creare un file di log di piccole dimensioni in tutti i nodi (idealmente in volumi o montaggi DAX). In caso di failover, il percorso del buffer del log persistente deve esistere, affinché il failover venga eseguito correttamente.

Cautela

Se il percorso o il file del buffer del log persistente non è presente durante un evento di failover del gruppo di disponibilità o l'avvio del database, il database entra in uno stato RECOVERY PENDING fino a quando il problema non viene risolto.

Interoperabilità con altre caratteristiche PMEM

Quando sono abilitati sia il buffer di log persistente che il Pool Buffer Ibrido, insieme al flag di traccia di avvio 809, il Pool Buffer Ibrido funzionerà in modalità Scrittura Diretta.

Operazioni di backup e ripristino

Si applicano le normali condizioni di ripristino. Se il buffer di log persistente viene ripristinato in un volume o punto di montaggio DAX, continua a funzionare. Se il log viene ripristinato in un volume del disco non DAX, può essere rimosso in modo sicuro usando il comando ALTER DATABASE REMOVE FILE.

Passaggi successivi