Gestione delle dimensioni del file di log delle transazioniManage the Size of the Transaction Log File

In questo argomento viene descritto come monitorare SQL ServerSQL Server dimensioni del log delle transazioni, compattare il log delle transazioni, aggiungere o aumentare dimensioni di un file di log delle transazioni, ottimizzare la tempdb tasso di aumento delle dimensioni del log delle transazioni e controllare l'aumento di dimensioni di un file di log delle transazioni.This topic covers how to monitor SQL ServerSQL Server transaction log size, shrink the transaction log, add to or enlarge a transaction log file, optimize the tempdb transaction log growth rate, and control the growth of a transaction log file.

Monitoraggio dell'utilizzo dello spazio del log Monitor log space use

Monitorare l'utilizzo dello spazio del log tramite DBCC SQLPERF (LOGSPACE).Monitor log space use by using DBCC SQLPERF (LOGSPACE). Questo comando restituisce informazioni sulla quantità di spazio del log attualmente usata e indica quando il log delle transazioni deve essere troncato.This command returns information about the amount of log space currently used, and indicates when the transaction log needs truncation. Per ulteriori informazioni, vedere DBCC SQLPERF Transact-SQL.For more information, see DBCC SQLPERF Transact-SQL. Per informazioni sulla dimensione del file di log corrente, la dimensione massima e l'opzione di aumento automatico delle dimensioni per il file, è inoltre possibile utilizzare il dimensioni, max_size, e crescita colonne per i file di log in Sys. database_files.For information about the current log file size, its maximum size, and the autogrow option for the file, you can also use the size, max_size, and growth columns for that log file in sys.database_files. Per altre informazioni, vedere sys.database_files (Transact-SQL).For more information, see sys.database_files (Transact-SQL).

ImportanteImportant! Evitare l'overload del disco del log.Avoid overloading the log disk!

Compattare il file di log Shrink log file size

Per ridurre la dimensione fisica di un file di log fisico, è necessario ridurre il file di log.To reduce the physical size of a physical log file, you must shrink the log file. Ciò è utile quando si è certi che un file di log delle transazioni contiene spazio inutilizzato.This is useful when you know that a transaction log file contains unused space. È possibile compattare un file di log solo mentre il database è online, e almeno un file di log virtuale è disponibile.You can shrink a log file only while the database is online, and at least one virtual log file is free. In alcuni casi, la compattazione del log potrebbe non essere possibile finché il log non viene troncato.In some cases, shrinking the log may not be possible until after the next log truncation.

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.Factors, such as a long-running transaction, that keep virtual log files active for an extended period can restrict log shrinkage or even prevent the log from shrinking at all. Per informazioni sui fattori che possono ritardare il troncamento del log, vedere Log delle transazioni (SQL Server).For information about factors that can delay log truncation, see The Transaction Log (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, ovvero dei file di log virtuali inattivi.Shrinking a log file removes one or more virtual log files that hold no part of the logical log (that is, inactive virtual log files). Quando si compatta un file di log delle transazioni, i file di log virtuali inattivi vengono rimosse dalla fine del file di log per ridurre il log approssimativamente alle dimensioni di destinazione.When a transaction log file is shrunk, inactive virtual log files are removed from the end of the log file to reduce the log to approximately the target size.

Compattare un file di log senza compattare i file di databaseShrink a log file (without shrinking database files)

Nota

È possibile impostare la compattazione automatica, i file di log.You can set log files to shrink automatically. È consigliabile tuttavia evitare di eseguire la compattazione automatica impostando la proprietà del database autoshrink su FALSE per impostazione predefinita.However, we recommend against automatic shrinking, and the autoshrink database property is set to FALSE by default. 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.If autoshrink is set to TRUE, automatic shrinking reduces the size of a file only when more than 25 percent of its space is unused. 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.The file is shrunk either to the size at which only 25 percent of the file is unused space or to the original size of the file, whichever is larger. Per informazioni sulla modifica dell'impostazione della proprietà autoshrink, vedere Visualizzare o modificare le proprietà di un database (uso della proprietà Auto Shrink nella pagina Opzioni) o Opzioni ALTER DATABASE SET (Transact-SQL) (uso dell'opzione AUTO_SHRINK).For information about changing the setting of the autoshrink property, see View or Change the Properties of a Database—use the Auto Shrink property on the Options page—or ALTER DATABASE SET Options (Transact-SQL)—use the AUTO_SHRINK option.

Aggiungere o aumentare le dimensioni di un file di log Add or enlarge a log file

È possibile guadagnare spazio aumentando il file di log esistente, se lo spazio su disco sufficiente, oppure aggiungendo un file di log nel database, in genere in un altro disco.You can gain space by enlarging the existing log file (if disk space permits) or by adding a log file to the database, typically on a different disk.

  • Per aggiungere un file di log al database, utilizzare la clausola ADD LOG FILE dell'istruzione ALTER DATABASE.To add a log file to the database, use the ADD LOG FILE clause of the ALTER DATABASE statement. L'aggiunta di un file di log consente l'aumento delle dimensioni del log.Adding a log file allows the log to grow.

  • Per aumentare le dimensioni del file di log, utilizzare la clausola MODIFY FILE dell'istruzione ALTER DATABASE, specificando la sintassi SIZE e MAXSIZE.To enlarge the log file, use the MODIFY FILE clause of the ALTER DATABASE statement, specifying the SIZE and MAXSIZE syntax. Per altre informazioni, vedere ALTER DATABASE (Transact-SQL).For more information, see ALTER DATABASE (Transact-SQL).

Ottimizzare le dimensioni del log delle transazioni di tempdb Optimize tempdb transaction log size

Il riavvio di un'istanza del server riporta il log delle transazioni del database tempdb alle dimensioni originali, antecedenti all'aumento automatico delle dimensioni.Restarting a server instance resizes the transaction log of the tempdb database to its original, pre-autogrow size. Questo può comportare una riduzione delle prestazioni del log delle transazioni di tempdb .This can reduce the performance of the tempdb transaction log. Per evitare tale overhead, è possibile incrementare le dimensioni del log delle transazioni di tempdb dopo l'avvio o il riavvio dell'istanza del server.You can avoid this overhead by increasing the size of the tempdb transaction log after starting or restarting the server instance. Per altre informazioni, vedere tempdb Database.For more information, see tempdb Database.

Controllare l'aumento delle dimensioni di un file di log delle transazioni Control transaction log file growth

Utilizzare il ALTER DATABASE (Transact-SQL) istruzione per gestire la crescita di un file di log delle transazioni.Use the ALTER DATABASE (Transact-SQL) statement to manage the growth of a transaction log file. Si noti quanto segue:Note the following:

  • Per modificare le dimensioni del file corrente in unità KB, MB, GB e TB, utilizzare l'opzione SIZE.To change the current file size in KB, MB, GB, and TB units, use the SIZE option.
    • Per modificare l'incremento di crescita, utilizzare l'opzione FILEGROWTH.To change the growth increment, use the FILEGROWTH option. Il valore 0 indica che l'aumento automatico delle dimensioni è disattivato e non è consentita l'allocazione di spazio aggiuntivo.A value of 0 indicates that automatic growth is set to off and no additional space is permitted. Anche un piccolo aumento automatico delle dimensioni di un file di log può comportare una riduzione delle prestazioni.A small autogrowth increment on a log file can reduce performance. È consigliabile specificare un incremento di crescita per un file di log sufficientemente grande da consentire di evitare l'espansione frequente.The file growth increment on a log file should be sufficiently large to avoid frequent expansion. L'incremento di crescita predefinito pari al 10% è solitamente appropriato.The default growth increment of 10 percent is generally suitable.

Per informazioni sulla modifica della proprietà relativa alla crescita di un file di log, vedere ALTER DATABASE (Transact-SQL).For information on changing the file-growth property on a log file, see 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.To control the maximum the size of a log file in KB, MB, GB, and TB units or to set growth to UNLIMITED, use the MAXSIZE option.

Vedere ancheSee also

BACKUP (Transact-SQL) BACKUP (Transact-SQL)
Risolvere i problemi relativi a un Log delle transazioni pieno (errore di SQL Server 9002) Troubleshoot a Full Transaction Log (SQL Server Error 9002)