Il ripristino da un log delle transazioni pieno in un database di SQL Server

INTRODUZIONE

Log delle transazioni pieno può rendere inutilizzabile il database di Microsoft SQL Server. In questo articolo viene descritto come Tronca e compattare il log delle transazioni quando essi crescita eccessive. In questo articolo viene inoltre descritto come impedire che i registri delle transazioni crescita imprevista.

Ulteriori informazioni

Passaggio 1: ridurre le dimensioni del log delle transazioni


Quando i registri delle transazioni sono pieni, è necessario ridurre le dimensioni del log delle transazioni. A tale scopo, è necessario troncare le transazioni inattive nel registro delle transazioni e quindi ridurre il file di registro delle transazioni.

Nota: I registri delle transazioni sono molto importanti per mantenere l'integrità delle transazioni del database. Non eliminare i file di registro delle transazioni, nemmeno dopo avere eseguito un backup del database e i log delle transazioni. Passaggio due: le transazioni inattive nel registro delle transazioni


Quando i registri delle transazioni sono pieni, immediatamente il backup del log delle transazioni. Durante il backup del file di registro delle transazioni, SQL Server viene troncata automaticamente la parte inattiva del log delle transazioni. La parte inattiva del log delle transazioni contiene transazioni completate, in modo che il file di registro non viene più utilizzato da SQL Server durante il processo di ripristino. SQL Server riutilizza questo spazio troncato, inattivo nel registro delle transazioni anziché lasciare che il log delle transazioni continua a crescere e utilizzare più spazio.

Per ulteriori informazioni sui problemi che è necessario prendere in considerazione quando esegue il backup dei log delle transazioni e quando si ripristina il backup del log delle transazioni, visitare i seguenti argomenti nella Documentazione in linea di SQL Server:
  • Backup del log delle transazioni
  • Ripristino e backup del log delle transazioni
È inoltre possibile eliminare le transazioni inattive da un file di registro delle transazioni utilizzando il metodo Truncate . Per ulteriori informazioni sul troncamento del log delle transazioni, vedere l'argomento "Troncamento del log delle transazioni" nella Documentazione in linea di SQL Server.

Importante Una volta troncati manualmente i file di registro delle transazioni, è necessario creare un backup completo del database prima di creare un backup del log delle transazioni.

Per ulteriori informazioni sui problemi che possono verificarsi quando si troncano i file di registro delle transazioni, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:

62866 motivi perché log delle transazioni SQL non viene troncato

Passaggio 3: compattare il file di registro delle transazioni


L'operazione di backup o il metodo Truncate non riduce la dimensione del file di registro. Per ridurre la dimensione del file registro delle transazioni, è necessario compattare il file di registro delle transazioni. Per compattare un file di registro delle transazioni per la dimensione richiesta e rimuovere le pagine inutilizzate, è necessario utilizzare l'operazione DBCC SHRINKFILE. L'istruzione DBCC SHRINKFILE Transact-SQL consente di compattare solo la parte inattiva del file di registro.

Nota: L'istruzione DBCC SHRINKFILE Transact-SQL non troncare il log e compattare lo spazio utilizzato del file di log in modo autonomo.

Per ulteriori informazioni sulla compattazione del file di registro delle transazioni, vedere i seguenti argomenti nella Documentazione in linea di SQL Server:
  • Compattazione del log delle transazioni
  • L'ISTRUZIONE DBCC SHRINKFILE
Per ulteriori informazioni su come compattare i file di registro delle transazioni in SQL Server 2000, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:

272318 compattazione del log delle transazioni in SQL Server 2000 con DBCC SHRINKFILE

Per ulteriori informazioni sui problemi che possono verificarsi quando si compattano i file di registro delle transazioni, fare clic sui numeri per visualizzare gli articoli della Microsoft Knowledge Base riportato di seguito:

814574 PRB: messaggio di errore: "Impossibile compattare il file di registro..." si verifica quando si compatta i file registro delle transazioni

324432 PRB: comandi DBCC SHRINKFILE e SHRINKDATABASE potrebbero non funzionare a causa di scarsamente popolato colonne text, ntext o immagine


Passaggio 4: impedire che i file di registro delle transazioni crescita imprevista


Per impedire la crescita imprevista del file di registro delle transazioni, è consigliabile utilizzare uno dei seguenti metodi:
  • Impostare la dimensione della transazione di file di registro su un valore elevato per evitare l'espansione automatica dei file di registro delle transazioni.
  • Configurare l'espansione automatica dei file di registro delle transazioni utilizzando unità di memoria anziché una percentuale, dopo avere valutato accuratamente la dimensione ottimale della memoria.

    Per ulteriori informazioni sugli aspetti da considerare quando si configura l'opzione di aumento automatico, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:

    Considerazioni sulla 315512 per la configurazione di aumento e compattazione automatici

  • Modificare il modello di recupero. Se si verifica un'emergenza o danneggiamento dei dati, è necessario ripristinare il database in modo da conservare la coerenza dei dati e l'integrità delle transazioni del database. In base alle modalità critica i dati nel database è, è possibile utilizzare uno dei seguenti modelli di recupero per determinare la modalità di backup dei dati e qual è l'esposizione alla perdita di dati:
    • Modello di recupero semplice
    • Modello di recupero completo
    • Modello di recupero di massa

    È possibile utilizzare il modello di recupero semplice per ripristinare il database per il backup più recente del database. In alternativa, è possibile utilizzare il modello di recupero completo o il modello di recupero di massa per ripristinare il database al punto quando si è verificato l'errore. A tale scopo, ripristinare il database utilizzando il backup dei file log transazione.

    Per impostazione predefinita, in SQL Server 2000 e SQL Server 2005, il modello di recupero per un database di SQL Server è impostato per il modello di recupero completo. Con il modello di recupero completo, backup regolari del log delle transazioni vengono utilizzati per impedire che la dimensione del file di registro transazione crescita sproporzionata rispetto le dimensioni del database. Tuttavia, se non vengono eseguiti i backup regolari del log delle transazioni, il file di registro delle transazioni aumenta fino a riempire il disco e potrebbe non essere possibile eseguire eventuali operazioni di modifica dei dati nel database di SQL Server.

    È possibile modificare il modello di recupero da completo a semplice se si desidera utilizzare i file di registro delle transazioni durante un'operazione di ripristino di emergenza.
  • Eseguire il backup del file di registro delle transazioni regolarmente per eliminare le transazioni inattive nel registro delle transazioni.
  • Progettare transazioni di piccole dimensioni.
  • Assicurarsi che nessuna transazione non vincolata continuano l'esecuzione a tempo indefinito.
  • Pianificazione giornaliera, l'opzione Update Statistics.
  • Per deframmentare gli indici in modo le prestazioni del carico di lavoro nell'ambiente di produzione, utilizzare l'istruzione Transact-SQL di DBCC INDEXDEFRAG anziché l'istruzione DBCC DBREINDEX Transact-SQL. Se si esegue l'istruzione DBCC DBREINDEX, il log delle transazioni potrebbe espandersi in maniera significativa quando il database di SQL Server è in modalità di recupero con registrazione completa. Inoltre, l'istruzione DBCC INDEXDEGRAG non mantiene i blocchi per lungo tempo, a differenza dell'istruzione DBCC DBREINDEX.

    Per ulteriori informazioni sulla deframmentazione degli indici in SQL Server 2000, vedere il seguente sito Web Microsoft:
Ulteriori informazioni sui file di registro delle transazioni
In SQL Server 2000 e SQL Server 2005, ogni database contiene almeno un file di dati e file di log di una transazione. SQL Server memorizza fisicamente i dati nel file di dati. Il file di registro vengono memorizzati i dettagli di tutte le modifiche eseguite sul database di SQL Server e i dettagli delle transazioni eseguito tali modifiche. Poiché l'integrità transazionale è una caratteristica fondamentale e intrinseca di SQL Server, registrare i dettagli delle transazioni non può essere disattivata in SQL Server.

File registro delle transazioni viene logicamente suddiviso in segmenti più piccoli che sono indicati come file di log virtuali. In SQL Server 2000, è possibile configurare il file di registro delle transazioni per espandere in base alle esigenze. L'espansione del log delle transazioni può essere controllato dall'utente o può essere configurato per utilizzare tutto lo spazio disponibile su disco. Eventuali modifiche apportate alle dimensioni del file registro delle transazioni, ad esempio il troncamento del log delle transazioni o aumento delle dimensioni del file di registro delle transazioni, SQL Server vengono eseguiti in unità di file di log virtuali.

Se il file di registro delle transazioni che corrisponde a un database di SQL Server è pieno e se è stata impostata l'opzione per la transazione di aumento automatico delle dimensioni file di registro, il file di registro delle transazioni aumenta in unità di file di log virtuali. In alcuni casi, il file di registro delle transazioni può diventare molto grande e potreste avere spazio su disco insufficiente. Quando un file di registro delle transazioni aumenta fino a quando il file di registro viene utilizzato tutto lo spazio disponibile su disco e non può espandersi ulteriormente, è non possibile eseguire non è più eventuali operazioni di modifica dei dati sul database. Inoltre, SQL Server a contrassegnare un database come sospetto a causa della mancanza di spazio per l'espansione del log delle transazioni.

Per ulteriori informazioni sugli scenari che possono causare il crescita imprevista del log delle transazioni, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:

317375 log delle transazioni aumenta in modo imprevisto o diventa pieno in SQL Server


Ulteriori risorse

Per ulteriori informazioni su come ridurre le dimensioni del log delle transazioni, visitare i seguenti siti Web Microsoft:


Riferimenti

Per ulteriori informazioni sulla risoluzione dei problemi il requisito di spazio su disco aggiuntivo durante il processo di ripristino, vedere l'argomento "spazio su disco insufficiente" nella documentazione in linea di SQL Server. Per ulteriori informazioni sull'architettura di registro delle transazioni, vedere i seguenti argomenti nella documentazione in linea di SQL Server:
  • Architettura del log delle transazioni
  • Architettura logica del log delle transazioni
  • Architettura fisica del log delle transazioni
Per ulteriori informazioni sui modelli di recupero in SQL Server 2000, vedere i seguenti argomenti nella documentazione in linea di SQL Server:
  • Se si seleziona un modello di recupero
  • Recupero semplice
  • Recupero completo
  • Recupero di massa
  • Cambio di modelli di recupero

Proprietà

ID articolo: 873235 - Ultima revisione: 30 gen 2017 - Revisione: 2

Feedback