Gestione delle dimensioni del file di log delle transazioni
In alcuni casi, può essere utile compattare o espandere fisicamente il file di log fisico del log delle transazioni di un database di SQL Server. Questo argomento contiene informazioni su come monitorare le dimensioni di un log delle transazioni di SQL Server, compattare il log delle transazioni, aggiungere o ingrandire un file di log delle transazioni, ottimizzare il tasso di crescita del log delle transazioni tempdb e controllare l'aumento di un file di log delle transazioni.
Monitoraggio dell'utilizzo dello spazio del log
È possibile monitorare l'utilizzo dello spazio del log mediante DBCC SQLPERF (LOGSPACE). Questo comando restituisce informazioni sulla quantità di spazio del log attualmente utilizzata e indica quando il log delle transazioni deve essere troncato. Per altre informazioni, vedere DBCC SQLPERF (Transact-SQL).For more information, see DBCC SQLPERF (Transact-SQL). Per informazioni sulle dimensioni correnti di un file di log, sulle relative dimensioni massime e sull'opzione di aumento automatico delle dimensioni per il file, è anche possibile usare le colonne size, max_size e growth per il file di log in sys.database_files. Per altre informazioni, vedere sys.database_files (Transact-SQL).
Importante
È consigliabile evitare l'overload del disco per il log.
Compattazione del file di log
Per ridurre la dimensione fisica di un file di log fisico, è necessario ridurre il file di log. Ciò può risultare utile se si è a conoscenza del fatto che un file di log delle transazioni contiene spazio inutilizzato che non sarà più necessario. La compattazione può verificarsi solo mentre il database è online e quando almeno un file di log virtuale è disponibile. In alcuni casi, la compattazione del log potrebbe non essere possibile finché il log non viene troncato.
Nota
Fattori come una transazione con esecuzione prolungata, che mantiene i file di log virtuali attivi per un lungo periodo di tempo, possono limitare in tutto o in parte la compattazione del log. Per informazioni sui fattori che possono ritardare il troncamento del log, vedere Log delle transazioni (SQL Server).
Il processo di compattazione di un file di log comporta la rimozione di uno o più file di log virtuali che non contengono alcuna parte del log logico (ossia file di log virtuali inattivi). Quando si compatta un file di log delle transazioni, viene rimosso dalla fine del file di log un numero di file di log virtuali inattivi sufficiente a ridurre il log approssimativamente alle dimensioni di destinazione.
Per compattare un file di log (senza compattare i file di database)
Per monitorare gli eventi di compattazione dei file di log
To monitor log space
sys.database_files (Transact-SQL) (Vedere le colonne size, max_size e growth per il file o i file di log).
Nota
La compattazione dei file di log e di database può essere impostata in modo da essere eseguita automaticamente. È consigliabile tuttavia evitare di eseguire la compattazione automatica impostando la proprietà del database autoshrink
su FALSE per impostazione predefinita. Se autoshrink
viene impostato su TRUE, la compattazione automatica riduce le dimensioni di un file solo quando più del 25 percento dello spazio del file risulta inutilizzato. Il file viene compattato fino a quando la percentuale di spazio inutilizzato nel file non risulta pari al 25 percento oppure fino a quando il file non raggiunge le dimensioni originali, a seconda di quale tra questi due sia il valore maggiore. Per informazioni sulla modifica dell'impostazione della autoshrink
proprietà, vedere Visualizzare o modificare le proprietà di un database, utilizzare la proprietà Compattazione automatica nella pagina Opzioni o opzioni ALTER DATABASE SET (Transact-SQL)- utilizzare l'opzione AUTO_SHRINK.
Aggiunta o aumento delle dimensioni di un file di log
In alternativa, è possibile guadagnare spazio aumentando le dimensioni del file di log esistente, se lo spazio è sufficiente, oppure aggiungendo un file di log al database, in genere in un disco diverso.
Per aggiungere un file di log al database, utilizzare la clausola ADD LOG FILE dell'istruzione ALTER DATABASE. L'aggiunta di un file di log consente l'aumento delle dimensioni del log.
Per aumentare le dimensioni del file di log, utilizzare la clausola MODIFY FILE dell'istruzione ALTER DATABASE, specificando la sintassi SIZE e MAXSIZE. Per altre informazioni, vedere ALTER DATABASE (Transact-SQL).
Ottimizzazione delle dimensioni del log delle transazioni di tempdb
Il riavvio di un'istanza del server riporta il log delle transazioni del database tempdb alle dimensioni originali, antecedenti all'aumento automatico delle dimensioni. Questo può comportare una riduzione delle prestazioni del log delle transazioni di tempdb . Per evitare tale overhead, è possibile incrementare le dimensioni del log delle transazioni di tempdb dopo l'avvio o il riavvio dell'istanza del server. Per altre informazioni, vedere tempdb Database.
Controllo dell'aumento delle dimensioni di un file di log delle transazioni
È possibile usare l'istruzione ALTER DATABASE (Transact-SQL) per gestire l'aumento di un file di log delle transazioni. Tenere presente quanto segue:
Per modificare le dimensioni del file corrente in unità KB, MB, GB e TB, utilizzare l'opzione SIZE.
Per modificare l'incremento di crescita, utilizzare l'opzione FILEGROWTH. Il valore 0 indica che l'aumento automatico delle dimensioni è disattivato e non è consentita l'allocazione di spazio aggiuntivo. Anche un piccolo aumento automatico delle dimensioni di un file di log può comportare una riduzione delle prestazioni. È consigliabile specificare un incremento di crescita per un file di log sufficientemente grande da consentire di evitare l'espansione frequente. L'incremento di crescita predefinito pari al 10% è solitamente appropriato.
Per informazioni sulla modifica della proprietà relativa alla crescita di un file di log, vedere ALTER DATABASE (Transact-SQL).
Per controllare le dimensioni massime di un file di log in unità KB, MB, GB e TB o per impostare la crescita su UNLIMITED, utilizzare l'opzione MAXSIZE.
Vedere anche
BACKUP (Transact-SQL)
Risolvere i problemi relativi a un log delle transazioni completo (Errore di SQL Server 9002)