Risoluzione dei problemi relativi a un log delle transazioni pieno (Errore 9002)
Data aggiornamento: 14 aprile 2006
In questo argomento vengono illustrate le risposte possibili a un log delle transazioni pieno e viene spiegato come evitare tale situazione in futuro. Quando il log delle transazioni è pieno, in Motore di database di SQL Server viene generato un errore 9002. Il log può riempirsi quando il database è in linea o in stato di recupero. Se il log si riempie quando il database è in linea, quest'ultimo rimane in linea anche se potrà soltanto essere letto, non aggiornato. Se il log si riempie durante il recupero, in Motore di database il database viene contrassegnato come RESOURCE PENDING. In entrambi i casi, è richiesto che l'utente intervenga per liberare spazio nel log.
Risposta a un log delle transazioni pieno
La risposta appropriata a un log delle transazioni pieno dipende in parte dalla condizione o dalle condizioni che hanno causato il riempimento del log. Per individuare la condizione che impedisce il troncamento del log in un determinato caso, utilizzare le colonne log_reuse_wait e log_reuse_wait_desc della vista del catalogo sys.database. Per ulteriori informazioni, vedere sys.databases (Transact-SQL). Per le descrizioni dei fattori che possono ritardare il troncamento del log, vedere Fattori che possono ritardare il troncamento del log.
Importante: |
---|
Se l'errore 9002 si è verificato durante il recupero del database, risolvere il problema, dopodiché recuperare il database utilizzando ALTER DATABASE database_name SET ONLINE. |
Per gestire un log delle transazioni pieno sono disponibili le soluzioni alternative seguenti:
- Esecuzione del backup del log
- Aumento dello spazio libero su disco in modo che le dimensioni del log possano aumentare automaticamente
- Spostamento del file di log in un'unità disco con spazio sufficiente
- Aumento delle dimensioni di un file di log
- Aggiunta di un file di log in un altro disco
- Completamento o interruzione di una transazione con esecuzione prolungata.
Queste soluzioni alternative verranno illustrate nelle sezioni successive. Scegliere la risposta più appropriata a seconda della situazione.
[!NOTA] Forzando il troncamento del log la catena di log viene interrotta e il database risulta vulnerabile fino al backup di database completo successivo. Per questo motivo, l'opzione TRUNCATE_ONLY verrà rimossa dall'istruzione BACKUP in una versione futura di SQL Server. Evitare l'utilizzo di questa opzione in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Backup del log
Nel modello di recupero con registrazione completa o nel modello di recupero con registrazione minima delle transazioni di massa, se non è stato eseguito il backup del log delle transazioni di recente, è possibile che sia il backup a impedire il troncamento del log. Se il backup del log non è mai stato eseguito, è necessario creare due backup del log per consentire a Motore di database di troncare il log in corrispondenza del punto dell'ultimo backup. Il troncamento del log consente di rendere disponibile spazio per nuovi record del log. Per evitare che il log si riempia di nuovo, eseguire backup del log frequenti.
Per creare un backup del log delle transazioni
Importante: |
---|
Se il database è danneggiato, vedere Backup della parte finale del log. |
- Procedura: Esecuzione del backup di un log delle transazioni (SQL Server Management Studio)
- Procedura: Creazione di un backup del log delle transazioni (Transact-SQL)
- SqlBackup (SMO)
Aumento dello spazio disponibile su disco
Potrebbe essere possibile liberare spazio sull'unità disco contenente il file del log delle transazioni per il database, eliminando o spostando altri file. L'aumento dello spazio disponibile su disco consente al sistema di recupero di ingrandire automaticamente il file di log.
Spostamento del file di log in un altro disco
Se non é possibile liberare spazio su disco sufficiente nell'unità che attualmente contiene il file di log, prendere in considerazione lo spostamento del file in un'altra unità con spazio adeguato.
Importante: |
---|
È consigliabile non memorizzare mai file di log in file system compressi. |
Per spostare un file di log
Aumento delle dimensioni di un file di log
Se nel disco del log è disponibile spazio, è possibile aumentare le dimensioni del file di log.
Per aumentare le dimensioni del file
Se l'aumento automatico dimensioni è disabilitato, il database è in linea ed è disponibile spazio sufficiente sul disco, eseguire una delle operazioni seguenti:
- Aumentare manualmente le dimensioni del file per produrre un incremento di crescita singolo.
- Attivare l'aumento automatico dimensioni utilizzando l'istruzione ALTER DATABASE per impostare un incremento di crescita diverso da zero per l'opzione FILEGROWTH.
[!NOTA] In entrambi i casi, se sono state raggiunte le dimensioni massime consentite correnti, aumentare il valore MAXSIZE.
Aggiunta di un file di log in un altro disco
Aggiungere un nuovo file di log al database in un altro disco contenente spazio sufficiente utilizzando ALTER DATABASE <database_name> ADD LOG FILE.
Per aggiungere un file di log
- Aggiunta ed eliminazione di file di dati e del log delle transazioni (Transact-SQL)
- Procedura: Aggiunta di file di dati o di log a un database (SQL Server Management Studio)
Identificazione e gestione di una transazione con esecuzione prolungata
Per ulteriori informazioni, vedere Gestione di transazioni con esecuzione prolungata.
Vedere anche
Concetti
Creazione di backup del log delle transazioni
Fattori che possono ritardare il troncamento del log
Panoramica dei modelli di recupero
Introduzione ai log delle transazioni
Utilizzo dei backup del log delle transazioni
Altre risorse
ALTER DATABASE (Transact-SQL)
Gestione del log delle transazioni
sp_add_log_file_recover_suspect_db (Transact-SQL)
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
14 aprile 2006 |
|