Le operazioni di database richiedono molto tempo per completare o attivano gli errori quando il log delle transazioni ha numerosi file di log virtuali

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 2028436
Sintomi
In un ambiente di SQL Server 2008, è possibile riscontrare i seguenti sintomi:
  • Uno o più database richiedere molto tempo per completare l'operazione di ripristino durante l'avvio di SQL Server.
  • Quando si esegue il ripristino di un database, richiede molto tempo per completare.
  • Tenta di connettersi a un database di richiede molto tempo per completare l'operazione.
  • Quando si tenta di impostare il mirroring del database, si verifichino i messaggi di errore 1413, 1443 e 1479, che indica un timeout.
  • Si verificano errori relativi alla memoria come 701 quando si tenta di ripristinare un database.

Quando si esamina il log degli errori di SQL Server, si noterà che una quantità significativa di tempo è trascorso prima della fase di analisi del processo di ripristino di database.
2010-05-08 14:42:38.65 spid22s avvio del database 'lot_of_vlfs'.
2010-05-08 14:46:04.76 spid22s l'analisi del database 'lot_of_vlfs' (16) è 0% completato (restano circa 0 secondi). Fase 1 di 3. Si tratta di un messaggio informativo. Non è richiesta alcuna azione.

Cause
Durante le fasi iniziali di un processo di ripristino di database, SQL Server esegue un rilevamento di tutti file di Log virtuali presenti in tutti i file di Log delle transazioni. Viene creato un elenco di tutti i file di Log virtuali. Questo processo può richiedere molto tempo in base al numero di file di Log virtuali presenti nel database specifico. Un database finisce con un numero elevato di file di Log virtuali se rileva il Log delle transazioni frequenti-aumento automatico con la crescita in corso per incrementi di dimensioni molto piccole.

Si avvia normalmente problemi menzionati nella sezione "Sintomi" quando il numero di file di Log virtuali è compreso nell'intervallo tra centinaia di migliaia.
Risoluzione
Per trovare il numero di file di Log virtuali in un particolare Database, è possibile utilizzare i metodi dal blog di seguito:
Come una struttura di file di registro può influenzare i tempi di ripristino di database

Potrebbe essere necessario mantenere il numero totale di file di Log virtuali in un numero ragionevole, ad esempio 10.000.

È possibile riconfigurare il file di registro per contenere solo un numero limitato di file di Log virtuali utilizzando i metodi seguenti:
  1. Compattare i file di registro delle transazioni, l'aumento di dimensioni dei file per le dimensioni necessarie manualmente utilizzando l'istruzione ALTER DATABASE TSQL <database name="">modificare FILE (nome = 'nome file logico della transazione ", dimensione registro = <required size="">)</required> </database>
  2. Rigenerare il file di registro delle transazioni e quindi aumentare manualmente i file di registro delle transazioni alle dimensioni necessarie:
    1. Se il database è stato chiuso correttamente (con nessun utente o le transazioni aperte), è possibile utilizzare l'opzione FOR ATTACH_REBUILD_LOG di CREATE DATABASE per creare un nuovo file di registro delle transazioni.
    2. Se un database di sola lettura dispone di un singolo log file che non è attualmente disponibile e se il database è stato chiuso pulizia [con nessun utente o le transazioni aperte] prima l'operazione di connessione, l'opzione FOR ATTACH di CREATE DATABASE automaticamente ricompila il file di log e aggiorna il file primario.

Dopo aver riconfigurato il layout del file registro delle transazioni, esaminare e apportare le modifiche necessarie per l'aumento automatico di impostazioni per il file di registro delle transazioni per evitare che si verifichi lo stesso problema in futuro.

Nota Prima di eseguire queste operazioni, assicurarsi di disporre di un backup ripristinabile valido nel caso in cui si verificano alcuni problemi in un secondo momento.

2524743 FIX: Ripristino richiede più tempo del previsto per un database in un 2008 di SQL Server o in un ambiente di SQL Server 2008 R2

2455009 FIX: Rallentamento delle prestazioni quando si ripristina un database, se sono presenti molti VLF all'interno del log delle transazioni in SQL Server 2005, SQL Server 2008 o SQL Server 2008 R2

2653893 Correzione: Esso richiede molto tempo per ripristinare un database in SQL Server 2008 R2

979042 Correzione: Il database principale non verrà recuperato se il database contiene un numero elevato di file di log virtuali in SQL Server 2005 o SQL Server 2008

2882905 Viene registrato un messaggio informativo 9017 quando si avvia un'istanza di SQL Server o ripristinare o collegare un database

Informazioni
Per informazioni complete sui file di log virtuali, vedere il seguente argomento della documentazione in linea: Architettura fisica del Log delle transazioni

Per ulteriori informazioni su questo problema, vedere il seguente:

Come una struttura di file di registro può influenzare i tempi di ripristino di database
Transaction Log VLF - troppi o troppo pochi?
1413 errore all'avvio di mirroring del Database: il numero di file di log virtuale è troppo elevato?

Inoltre è necessario tenere conto di un problema noto con la crescita dei registri delle transazioni:

2633151 Il file di registro delle transazioni di SQL Server database non aumenta per il valore configurato

Nota Informazioni su una modifica importante per l'algoritmo di creazione di VLF nel 2014 di SQL Server:


Per ulteriori informazioni su prodotti o strumenti che automaticamente per verificare questa condizione sull'istanza di SQL Server e sulle versioni del prodotto SQL Server, vedere la tabella riportata di seguito:

Software di regolaTitolo regolaDescrizione della regolaVersioni del prodotto per la quale viene valutata la regola
SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA)




Database con un numero elevato di VLF presente





In SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) fornisce una regola per individuare le situazioni in cui i database contengono un numero elevato di file di Log virtuali. Il BPA di SQL Server 2008 R2 supporta SQL Server 2008 e SQL Server 2008 R2.

Se si esegue lo strumento BPA e si verifica un errore con il titolo del motore di Database - database con un numero elevato di VLF presente, è necessario verificare il numero di file di Log virtuali per il database interessato e riconfigurare i file di registro delle transazioni.
SQL Server 2008
SQL Server 2008 R2






SQL Server 2012 Best Practice Analyzer (BPA di SQL Server 2012)



Database con un numero elevato di VLF presente




SQL Server 2012 Best Practice Analyzer (BPA di SQL Server 2012) fornisce una regola per individuare le situazioni in cui i database contengono un numero elevato di file di Log virtuali.

Se si esegue lo strumento BPA e si verifica un errore con il titolo del motore di Database - database con un numero elevato di VLF presente, è necessario verificare il numero di file di Log virtuali per il database interessato e riconfigurare i file di registro delle transazioni.
SQL Server 2012








Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 2028436 - Ultima revisione: 08/05/2015 20:28:00 - Revisione: 6.0

Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web

  • kbmt KB2028436 KbMtit
Feedback