Microsoft distribuisce le correzioni di Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) o Microsoft SQL Server 2008 o Microsoft SQL Server 2012 in un unico file scaricabile. Poiché le correzioni sono cumulative, ogni nuova versione contiene tutti gli aggiornamenti rapidi e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento precedente SQL Server 2008 R2 Service Pack 1 (SP1) o SQL Server 2008 o Microsoft SQL Server 2012.
Sintomi
Il ripristino di un database in Microsoft SQL Server 2008 R2 o in Microsoft SQL Server 2008 o in Microsoft SQL Server 2012 potrebbe richiedere molto tempo.
Causa
Questo problema si verifica perché la compilazione dell'elenco VLF (Virtual Log File) richiede molto tempo quando nel database sono presenti molti contratti multilicenza.
Risoluzione
Informazioni sugli aggiornamenti cumulativi
SQL Server 2012
La correzione di questo problema è stata rilasciata per la prima volta nell'aggiornamento cumulativo 1 per SQL Server 2012. Per altre informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:
2679368 Pacchetto di aggiornamento cumulativo 1 per SQL Server 2012Note Poiché le build sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni per la sicurezza inclusi nella versione di correzione precedente SQL Server 2012. Microsoft consiglia di prendere in considerazione l'applicazione della versione più recente di correzione che contiene questo hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:
2692828 Le build SQL Server 2012 rilasciate dopo il rilascio del SQL Server 2012 È necessario applicare un hotfix di SQL Server 2012 a un'installazione di SQL Server 2012.
SQL Server 2008 Service Pack 2
La correzione di questo problema è stata rilasciata per la prima volta nell'aggiornamento cumulativo 8 per SQL Server 2008 Service Pack 2. Per altre informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:
2648096 Pacchetto di aggiornamento cumulativo 8 per SQL Server 2008 Service Pack 2Note Poiché le build sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni per la sicurezza inclusi nella versione precedente delle correzioni di SQL Server 2008. Microsoft consiglia di prendere in considerazione l'applicazione della versione più recente di correzione che contiene questo hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:
2402659 Le build SQL Server 2008 rilasciate dopo il rilascio del Service Pack 2 di SQL Server 2008 microsoft SQL Server 2008 vengono create per specifici Service Pack SQL Server. È necessario applicare un hotfix di SQL Server 2008 Service Pack 2 a un'installazione di SQL Server 2008 Service Pack 2. Per impostazione predefinita, qualsiasi aggiornamento rapido fornito in un Service Pack di SQL Server è incluso nel service pack di SQL Server successivo.
SQL Server 2008 Service Pack 3
La correzione di questo problema è stata rilasciata per la prima volta nell'aggiornamento cumulativo 3 per SQL Server 2008 Service Pack 3. Per altre informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:
2648098 Pacchetto di aggiornamento cumulativo 3 per SQL Server 2008 Service Pack 3Note Poiché le build sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni per la sicurezza inclusi nella versione precedente delle correzioni di SQL Server 2008. Microsoft consiglia di prendere in considerazione l'applicazione della versione più recente di correzione che contiene questo hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:
2629969 Le build SQL Server 2008 rilasciate dopo il rilascio del Service Pack 3 di SQL Server 2008 microsoft SQL Server 2008 vengono create per specifici Service Pack SQL Server. È necessario applicare un hotfix di SQL Server 2008 Service Pack 3 a un'installazione di SQL Server 2008 Service Pack 3. Per impostazione predefinita, qualsiasi aggiornamento rapido fornito in un Service Pack di SQL Server è incluso nel service pack di SQL Server successivo.
Pacchetto di aggiornamento cumulativo 11 per SQL Server 2008 R2
La correzione di questo problema è stata rilasciata per la prima volta nell'aggiornamento cumulativo 11. Per altre informazioni su come ottenere questo pacchetto di aggiornamento cumulativo per SQL Server 2008 R2, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:
2633145 Pacchetto di aggiornamento cumulativo 11 per SQL Server 2008 R2Note Poiché le build sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni per la sicurezza inclusi nella versione di correzione precedente di SQL Server 2008 R2. È consigliabile applicare la versione più recente di correzione che contiene questo hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:
981356 Le build SQL Server 2008 R2 rilasciate dopo SQL Server 2008 R2
Pacchetto di aggiornamento cumulativo 4 per SQL Server 2008 R2 SP1
La correzione di questo problema è stata rilasciata per la prima volta nell'aggiornamento cumulativo 4. Per altre informazioni su come ottenere questo pacchetto di aggiornamento cumulativo per SQL Server 2008 R2 SP1, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:
2633146 Pacchetto di aggiornamento cumulativo 4 per SQL Server 2008 R2 SP1Note Poiché le build sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni per la sicurezza inclusi nella versione precedente della correzione di SQL Server 2008 R2 SP1. È consigliabile applicare la versione più recente di correzione che contiene questo hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:
2567616 Build di SQL Server 2008 R2 rilasciate dopo il rilascio di SQL Server 2008 R2 SP1
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Ulteriori informazioni
È possibile controllare il numero di segmenti VLF esaminando il file di log degli errori SQL e quindi individuando il numero di sequenza di log (LSN) in ogni file di backup del log delle transazioni. Le prime cifre prima del simbolo dei due punti nell'LSN corrispondono al numero del LSN.Ad esempio, il primo numero nel primo messaggio informativo per l'LSN è 1. Tuttavia, il primo numero nel secondo messaggio informativo per l'LSN è 100001. In questo scenario, ci sono 100.000 VLFs usati tra il momento del primo messaggio informativo e del secondo messaggio informativo. Di conseguenza, il log delle transazioni frammentato registrato con molti virtual log Files (vlFs) è simile al seguente:
{Log è stato eseguito il backup. Database: nomedb, data di creazione(ora): 07/07/2010/08(12:36:46), primo LSN: 1:5068:70, ultimo LSN: 1:5108:1, numero di dispositivi dump: 1, informazioni sul dispositivo: (FILE=1, TYPE=DISK: {'C:\folder\logbackup1.trn'}). Si tratta solo di un messaggio informativo. Non è richiesta alcuna azione utente.È stato eseguito il backup del log. Database: nomedb, data di creazione(ora): 07/00/2010/08(15:36:46), primo LSN: 100001:5108:1, ultimo LSN: 100002:5108:1, numero di dispositivi dump: 1, informazioni sul dispositivo: (FILE=2, TYPE=DISK: {'C:\folder\logbackup2.trn'}). Si tratta solo di un messaggio informativo. Non è richiesta alcuna azione utente.}
Riferimenti
Per ulteriori informazioni sui numeri di sequenza di log (LSN), visitare il seguente sito Web MSDN:
Informazioni generali sui numeri di sequenza di log
Per ulteriori informazioni su come una struttura di file di log può influire sui tempi di recupero del database, visitare il seguente sito Web MSDN:
Impatto della struttura di un file di log sui tempi di recupero del databasePer ulteriori informazioni sui contratti multilicenza del log delle transazioni, visitare il seguente sito Web MSDN:
Soluzione alternativa
-
Attendere il completamentodell'operazione di ripristino Se si ha un database non recuperato con prestazioni lente quando si ripristina o si ripristina il database, potrebbe essere necessario attendere il completamento dell'operazione di ripristino o ripristino. Ad esempio, è possibile visualizzare lo stato offline o di ripristino in SQL Server Management Studio (SSMS) per un database non recuperato. L'arresto di SQL Server in genere non offre alcun sollievo per un ripristino lento e può richiedere più tempo per ripetere la stessa fase di analisi del ripristino, fase di ripristino o fase di annullamento.
-
Evitare di ripristinare la sequenza del log delle transazioni che contiene migliaia di file multilicenzaSe si verificano rallentamenti nelle prestazioni durante il ripristino e il ripristino di un database usando un file di backup, è possibile evitare di ripristinare le sequenze del log delle transazioni che contengono migliaia di file multilicenza. Per identificare il file di backup con la maggior parte dei file di log virtuali registrati, usare l'istruzione seguente per visualizzare le colonne FirstLSN e LastLSN nei file di backup del log: RESTORE HEADERONLY FROM DISK='C:\folder\file.trn'È possibile decidere di evitare di ripristinare i file di backup del log. In alternativa, è possibile usare l'istruzione STOP AT nei comandi RESTORE per evitare le parti altamente frammentate dei log delle transazioni. Se non si ripristinano completamente le sequenze di log fino all'ultimo momento durante uno scenario di ripristino di errore, la perdita di dati si verifica nel database SQL Server. Questa perdita di dati si verifica perché non tutte le transazioni vengono conservate. Di conseguenza, c'è una decisione di compromesso tra le aziende. È possibile ripristinare completamente un log delle transazioni altamente frammentato. Tuttavia, questa operazione può richiedere molte ore. In alternativa, è possibile usare l'istruzione STOP AT nel ripristino per interrompere il ripristino prima della parte altamente frammentata del log. Tuttavia, le transazioni mancanti omettete vengono perse.Nota: Senza installare questo hotfix, in genere non esiste alcuna alternativa sicura per il ripristino rapido dopo il riavvio SQL Server. SQL Server deve individuare l'elenco dei file multilicenza per analizzare i file di log, ripetere le transazioni completate e quindi annullare le transazioni incomplete per completare il ripristino per portare il database online in modo sicuro. Non è possibile ignorare in modo sicuro le transazioni durante il recupero.