Incorrect page count? using DBCC UPDATEUSAGE

Proprio alcuni giorni fa (purtroppo) ho rilevato alcuni problemi sul database del sistema gestionale di un cliente.

Per alcune tabelle, il comando DBCC CHECKDB restituiva diversi errori, tra cui era presente anche questo:

Msg 2508, Level 16, State 3, Line 1 The In-row data RSVD page count for object "table1", index ID 0, partition ID 76911876381, alloc unit ID 76911876381 (type In-row data) is incorrect. Run DBCC UPDATEUSAGE.

Se vi trovate in questa situazione non disperatevi, questo (Msg 2508) non è un problema serio ed è banale da risolvere Smile … come specificato anche nel messaggio, eseguite DBCC UPDATEUSAGE sull’oggetto oppure sull’intero database per correggere il conteggio di pagine e righe nelle catalog view.

Il comando DBCC UPDATEUSAGE permette di corregge le imprecisioni relative al conteggio delle pagine e delle righe nelle catalog view. Queste imprecisioni possono causare la restituzione di report errati, sull'utilizzo dello spazio, da parte della stored procedure di sistema sp_spaceused.

In SQL Server 2005 e versioni successive questi valori vengono sempre gestiti in modo corretto. Tuttavia i database aggiornati da SQL Server 2000 possono contenere conteggi non validi (ed effettivamente il database su cui ho verificato il problema era originariamente installato su un’istanza SS2000).

Per correggere eventuali conteggi non validi, dopo l'aggiornamento è consigliabile eseguire DBCC UPDATEUSAGE.

Maggiori dettagli sono disponibili sui BOL: http://msdn.microsoft.com/en-us/library/ms188414.aspx

Ipotizzando quindi che l’errore sia stato rilevato sull’oggetto tabella dbo.Table1 del database DBGest1, sarà sufficiente eseguire il comando:

DBCC UPDATEUSAGE (DBGest1,"dbo.Table1");

Che restituirà un output simile a questo:

DBCC UPDATEUSAGE: conteggi aggiornati per la tabella 'Table1' (indice ' Table1', partizione 1):
        Pagine RSVD (In-row Data): da (-80) a (76) pagine.
Esecuzione DBCC completata. Se sono stati visualizzati messaggi di errore DBCC, rivolgersi all'amministratore di sistema.

Verificando nuovamente l'integrità logica e fisica di tutti gli oggetti del database con DBCC CHECKDB, potrete constatare che il messaggio errore non verrà visualizzato.

 

Published mercoledì 30 giugno 2010 0.49 by sgovoni

Comments

No Comments