Errore di tabella: la pagina di allocazione contiene valori di intestazione di pagina non validi.

Microsoft.SQLServer.2008.Table_error__Allocation_page_has_invalid__page_header_values.__1_5_Rule (Rule)

Knowledge Base article:

Cause

La pagina specificata include un'intestazione di pagina non valida.

Informazioni relative ai vari stati:

Stato 1: PAGE_TYPE può essere 'GAM_PAGE', 'SGAM_PAGE', 'ML_MAP_PAGE', 'DIFF_MAP_PAGE' oppure 'IAM_PAGE'.

Stato 2: PAGE_TYPE è 'PFS_PAGE'.

Stato 12: PAGE_TYPE è 'PFS_PAGE'. Tale stato rappresenta un errore irreversibile per il comando.

Soluzioni

ERRORE HARDWARE

Eseguire gli strumenti di diagnostica hardware e risolvere eventuali problemi. Esaminare inoltre i registri di sistema e delle applicazioni di Microsoft® Windows NT® nonché il log degli errori di SQL Server™ per verificare se è l'errore è stato causato da un guasto dell'hardware. Risolvere tutti gli eventuali problemi relativi all'hardware.

In caso di problemi persistenti che provocano il danneggiamento dei dati, provare a sostituire i vari componenti hardware per isolare il problema. Verificare che nel sistema non sia stata abilitata la memorizzazione nella cache in scrittura per il controller del disco. Se si ritiene che il problema possa essere questo, contattare il fornitore dell'hardware.

Infine, potrebbe essere utile passare a un sistema hardware completamente nuovo, eseguendo anche la riformattazione delle unità disco e la reinstallazione del sistema operativo.

RIPRISTINO DAL BACKUP

Se il problema non è correlato all'hardware ed è disponibile un backup valido noto, ripristinare il database dal backup.

DBCC CHECKDB

Se non è disponibile una copia di backup valida, eseguire DBCC CHECKDB senza una clausola di correzione per determinare l'entità del problema. DBCC CHECKDB consiglierà una clausola di correzione da utilizzare. Eseguire quindi DBCC CHECKDB con la clausola di correzione appropriata per correggere il problema.

ATTENZIONE: se non si è certi dell'effetto sui dati provocato dall'esecuzione di DBCC CHECKDB con una clausola di correzione, rivolgersi al servizio di supporto tecnico prima di eseguire questa istruzione.

La correzione dipende dal tipo di pagina (vedere l'errore 8938 per i tipi di pagina):

PFS_PAGE:

Non verrà eseguita alcuna operazione, poiché non è possibile correggere le pagine PFS.

IAM_PAGE:

La sequenza di pagine IAM verrà corretta per consentire l'esecuzione di ulteriori correzioni. Questa operazione potrebbe comportare la rimozione della pagina danneggiata.

Tutte le altre pagine di allocazione verranno riformattate e ricompilate (se è stata selezionata l'opzione per la correzione non documentata).

Se l'esecuzione di DBCC CHECKDB con una clausola di correzione non consente di risolvere il problema, rivolgersi al servizio di supporto tecnico.

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8946
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Errore di tabella: la pagina di allocazione contiene valori di intestazione di pagina non validi.
{0}
Event LogApplication
CommentMom2008ID='{AF0C3355-8A7B-4218-B2CF-CAFC4E6426FD}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.Windows.EventProvider Microsoft.SQLServer.SQLDefaultAccount
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2008.Table_error__Allocation_page_has_invalid__page_header_values.__1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{AF0C3355-8A7B-4218-B2CF-CAFC4E6426FD}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider" RunAs="SQL!Microsoft.SQLServer.SQLDefaultAccount">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>8946</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.Table_error__Allocation_page_has_invalid__page_header_values.__1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>