Condividi tramite


Gestione di transazioni con esecuzione prolungata

È possibile che il log venga riempito a causa di una transazione con esecuzione prolungata. Una transazione con esecuzione prolungata mantiene il log attivo dal file di log virtuale contenente il primo record di log della transazione. Da tale file di log virtuale in avanti non può esservi troncamento.

Nota importanteImportante

Una transazione con esecuzione molto prolungata può comportare il riempimento del log delle transazioni. Per informazioni sulla gestione di un log delle transazioni pieno, vedere Risoluzione dei problemi relativi a un log delle transazioni pieno (Errore 9002).

Individuazione delle transazioni con esecuzione prolungata

Per individuare le transazioni con esecuzione prolungata, utilizzare una delle alternative seguenti:

  • sys.dm_tran_database_transactions

    Questa vista a gestione dinamica restituisce informazioni sulle transazioni a livello di database. Per una transazione con esecuzione prolungata, sono colonne rilevanti quelle che indicano l'ora del primo record di log (database_transaction_begin_time), lo stato corrente della transazione (database_transaction_state) e il numero di sequenza del file di log (LSN) del record iniziale nel log delle transazioni (database_transaction_begin_lsn).

    Per ulteriori informazioni, vedere sys.dm_tran_session_transactions (Transact-SQL).

  • DBCC OPENTRAN

    Questa istruzione consente di identificare l'ID utente del proprietario della transazione, in modo da risalire, se lo si desidera, all'origine della transazione per terminarla in modo più appropriato, ovvero tramite il commit invece del rollback. Per ulteriori informazioni, vedere DBCC OPENTRAN (Transact-SQL).

[!NOTA]

Per informazioni sugli altri fattori che possono ritardare il troncamento del log, vedere Fattori che possono ritardare il troncamento del log..

Interruzione di una transazione

Potrebbe essere necessario utilizzare l'istruzione KILL. Eseguire l'istruzione con cautela, soprattutto quando sono in esecuzione processi importanti. Per ulteriori informazioni, vedere KILL (Transact-SQL).