FIX: Viene visualizzato l'errore 605 ed errore 824 quando si esegue una query che inserisce dati in una tabella temporanea in SQL Server

Bug: #50003826 (Hotfix SQL)
Microsoft distribuisce le correzioni Microsoft SQL Server 2008 come un unico file scaricabile. Poiché le correzioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e rilascio delle correzioni per tutte le correzioni fornite con il precedente 2008 di SQL Server.

Sintomi

In SQL Server 2008, si esegue una query che inserisce dati in una tabella temporanea. L'istruzione insert include una sottoquery che fa riferimento alla stessa tabella temporanea. Quando si esegue la query, si potrebbe ricevere un messaggio di errore analogo al seguente:
Msg 605, livello 21, stato 3, riga 1

Tentativo di recuperare la pagina logica (1:225) nel database 2 non riuscita. Appartiene a 281474980315136 unità di allocazione non 504403158513025024.

Se si esegue nuovamente la query, viene visualizzato un messaggio di errore analogo al seguente:

Msg 824, livello 24, stato 2, riga 1
SQL Server ha rilevato un errore dei / o basate su coerenza logico: checksum non corretto (previsto: 0x50758180; effettivo: 0x15658bfc). Si è verificata durante la lettura della pagina (1:336) nel database ID 2 all'offset 0x000000002a0000 nel file ' C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Altri messaggi nel SQL Server log degli errori del sistema o del log eventi possono fornire più dettagli. Si tratta di una condizione di errore grave che minaccia l'integrità del database e deve essere corretto immediatamente. Completare una verifica coerenza completo del database (DBCC CHECKDB). Questo errore può essere causato da molti fattori; Per ulteriori informazioni, vedere la documentazione in linea di SQL Server.
In alcuni casi, è inoltre che venga visualizzato un messaggio di errore analogo al seguente:
Msg 601, livello 12, stato 3, procedure nome, numero di riga
Impossibile continuare la scansione tramite NOLOCK a causa dello spostamento di dati.

Un costrutto di query possibili che può produrre questi errori è la seguente:
insert #table1select s.col1, s.col2
from #table2 s inner loop join #table1 t
on s.col3 = t.col3

Risoluzione

La correzione di questo problema è stata rilasciata prima 3 aggiornamento cumulativo. Per ulteriori informazioni su come ottenere il pacchetto di aggiornamento cumulativo per SQL Server 2008, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
960484 cumulativo update package 3 per SQL Server 2008
Nota: Poiché le versioni sono cumulative, ogni nuova versione di correzione contiene tutti gli hotfix e rilascio delle correzioni per tutte le correzioni fornite con il precedente 2008 di SQL Server. Si consiglia di considerare l'ipotesi di applicare la versione più recente contenente tale hotfix. Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
956909 versioni di SQL Server 2008 rilasciate dopo il rilascio di SQL Server 2008
Dopo aver installato questo pacchetto di aggiornamento cumulativo, è necessario attivare il flag di traccia 4135. A tale scopo, è possibile aggiungere il -T4135 parametro di avvio. In alternativa, è possibile utilizzare l'istruzione dbcc traceon(4135) per una determinata sessione.

Soluzione alternativa

Per risolvere questo problema, aggiungere una colonna che ha una chiave primaria cluster e una proprietà identity alla tabella temporanea. Ad esempio, eseguire l'istruzione seguente per modificare la tabella temporanea:
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Stato

Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".

Ulteriori informazioni

Anche se è visualizzato il messaggio di errore 824 o 605, il database non danneggiato. Inoltre, questi messaggi di errore di riferimento pagine del database tempdb.

Per ulteriori informazioni su quali file vengono modificati e per informazioni sui prerequisiti per applicare il pacchetto di aggiornamento cumulativo che include l'aggiornamento rapido descritto nell'articolo della Microsoft Knowledge Base, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
960484 cumulativo update package 3 per SQL Server 2008

Informazioni di SQL Server 2008 R2 BPA

In SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) fornisce una regola per individuare le situazioni in cui non è l'aggiornamento cumulativo o il flag di traccia attivato per risolvere questo problema. Il BPA di SQL Server 2008 R2 supporta SQL Server 2008 e SQL Server 2008 R2.

Se si esegue lo strumento BPA e incontrare un "Database Engine - tempdb errori, correggere o mancante di flag di traccia" avviso, è necessario verificare la versione di SQL Server e i flag di traccia che sono configurati per attivare questa correzione.

Riferimenti

Software di regolaTitolo regolaIdentificatore della regola
SQL Server 2008 R2 BPA regolagli errori di tempdb correggere o mancante di flag di tracciaRID3808

Nota: È possibile attivare il flag di traccia 4135 o flag di traccia 4199 per attivare questa correzione. Il flag di traccia 4135 è stata introdotta nel pacchetto di aggiornamento cumulativo 3 per SQL Server 2008. Il flag di traccia 4135 è disponibile anche in SQL Server 2008 Service Pack 1, in SQL Server 2008 Service Pack 2 e in SQL Server 2008 R2. Flag di traccia 4199 è stata introdotta nel pacchetto di aggiornamento cumulativo 7 per SQL Server 2008, il pacchetto di aggiornamento cumulativo 7 per SQL Server 2008 Service Pack 1 e nel pacchetto di aggiornamento cumulativo 1 per SQL Server 2008 R2. Per ulteriori informazioni sui flag di traccia 4199, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
 974006 flag di traccia 4199 viene aggiunto al controllo più query optimizer precedentemente apportate in più flag di traccia
Poiché la correzione di questo problema comporta una combinazione di una build specifico hotfix e un flag di traccia per attivare la correzione, verranno incluse nella tabella seguente per visualizzare i diversi scenari e l'azione consigliata per poter adottare per ogni scenario.



Per ulteriori informazioni sulle compilazioni più recenti di SQL Server, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
957826 dove trovare informazioni il più recente di SQL Server compila

Riferimenti

Per ulteriori informazioni sull'elenco delle generazioni disponibili dopo il rilascio di SQL Server 2008, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:

956909 versioni di SQL Server 2008 rilasciate dopo il rilascio di SQL Server 2008

Per ulteriori informazioni sul modello di manutenzione incrementale per SQL Server, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:

935897 un modello di manutenzione incrementale è disponibile dal team di SQL Server per offrire gli hotfix per i problemi segnalati

Per ulteriori informazioni sullo schema di denominazione per gli aggiornamenti di SQL Server, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:

822499 Nuovo schema di denominazione per i pacchetti di aggiornamento software di Microsoft SQL Server
Per ulteriori informazioni sulla terminologia degli aggiornamenti software, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
824684 descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft
Proprietà

ID articolo: 960770 - Ultima revisione: 31 gen 2017 - Revisione: 1

Feedback