Condividi tramite


Risolvere i problemi relativi a un log delle transazioni completo (Errore di SQL Server 9002)

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 si riempie, il motore di database di SQL Server genera un errore 9002. Il log può riempirsi quando il database è online o in stato di recupero. Se il log si riempie quando il database è online, il database rimane online, ma può solo essere letto, non aggiornato. Se il log si riempie durante il recupero, il motore di database contrassegna il database 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 caso specifico, usare le colonne log_reuse_wait e log_reuse_wait_desc della vista del catalogo sys.database. Per altre informazioni, vedere sys.databases (Transact-SQL). Per le descrizioni dei fattori che possono ritardare il troncamento del log, vedere Log delle transazioni (SQL Server).

Importante

Se l'errore 9002 si è verificato durante il recupero del database, risolvere il problema, quindi recuperare il database tramite ALTER DATABASE nome_database 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 termine di una transazione con esecuzione prolungata.

Queste soluzioni alternative verranno illustrate nelle sezioni successive. Scegliere la risposta più appropriata a seconda della situazione.

Backup del log

Nel modello di recupero con registrazione completa o nel modello di recupero con registrazione minima delle operazioni bulk, se non è stato eseguito il backup del log delle transazioni di recente, è possibile che sia il backup a impedire il troncamento del log. Se non è mai stato eseguito il backup del log, è necessario creare due backup del log per consentire al 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 (SQL Server).

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. La dimensione massima per i file di log è due terabyte per file di log.

Per aumentare le dimensioni dei file

Se l'aumento automatico dimensioni è disabilitato, il database è online ed è disponibile spazio sufficiente sul disco, eseguire una delle operazioni seguenti:

  • Aumentare manualmente le dimensioni del file per produrre un incremento di crescita singolo.

  • Abilitare 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 disco diverso con spazio sufficiente usando ALTER DATABASE <database_name> ADD LOG FILE.

Per aggiungere un file di log

Vedere anche

ALTER DATABASE (Transact-SQL)
Gestione delle dimensioni del file di log delle transazioni
Backup di log delle transazioni (SQL Server)
sp_add_log_file_recover_suspect_db (Transact-SQL)