Errore di tabella: tipo di pagina non previsto

Microsoft.SQLServer.2012.Table_error___Unexpected_page_type__1_5_Rule (Rule)

Knowledge Base article:

Riepilogo

Il tipo della pagina P_ID non è quello previsto dal codice che tenta di interpretarlo. La pagina è tuttavia contrassegnata come allocata ed è questo il motivo per cui il codice DBCC tenta di interpretarla.

I vari tipi di pagina sono:

1 - Page::DATA_PAGE: pagina di dati in un heap o un indice cluster.

2 - Page::INDEX_PAGE: pagina di indice (albero B) nell'albero di un indice cluster o non cluster oppure foglia di un indice non cluster.

3 - Page::TEXT_MIX_PAGE: pagina di testo condivisa da diverse strutture di testo.

4 - Page::TEXT_TREE_PAGE: pagina di testo non condivisa.

5 - Non usata.

6 - Page::WF_PAGE: pagina del file di lavoro.

7 - Page::SORT_PAGE: pagina usata negli ordinamenti interni.

8 - Page::GAM_PAGE: mappa di allocazione GAM.

9 - Page::SGAM_PAGE: mappa di allocazione SGAM.

10 - Page::IAM_PAGE: mappa di allocazione degli indici IAM (Index Allocation Map).

11 - Page::PFS_PAGE: pagina di spazio disponibile e di stato dell'allocazione.

12 - Non usata.

13 - Page::BOOT_PAGE: pagina di informazioni a livello di database.

14 - Page::SYSCONFIG_PAGE: blocco di configurazione server.

15 - Page::FILEHEADER_PAGE: prima pagina di ogni file.

16 - Page::DIFF_MAP_PAGE: mappa di bit differenziale per un intervallo GAM.

17 - Page::ML_MAP_PAGE: mappa di extent a registrazione minima per un intervallo GAM.

Informazioni relative ai vari stati:

Stato 1: la pagina è stata rilevata nel livello foglia di una tabella di sistema critica, ma non è una pagina di dati di tipo = 1.

Stato 36: il tipo di pagina è completamente sconosciuto o la pagina è contrassegnata come pagina deallocata in precedenza da DBCC durante una correzione. L'errore viene individuato durante l'esecuzione del metodo Page::Audit.

Stato 300: la pagina è una pagina di dati di tipo = 1, ma fa parte di un indice non cluster.

Stato 301: la pagina è una pagina di indice di tipo = 2, ma fa parte di un heap o di un indice di testo.

Stato 302: la pagina è una pagina di testo di tipo = 3 o 4, ma fa parte di un heap o di un indice cluster o non cluster.

Stato 303: questo stato deriva da codice che legge pagine presumibilmente allocate a un indice, ovvero pagine IAM o pagine di dati, pagine di indice o pagine di testo contrassegnate come allocate a una pagina IAM. È stata rilevata una pagina il cui tipo non corrisponde a quelli consentiti. Esaminare il tipo di pagina per stabilire il tipo di pagina rilevato

Soluzioni

ERRORE HARDWARE

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

Se i problemi di incoerenza dei dati persistono, provare a eseguire lo swapping di diversi 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, contattare il supporto tecnico prima di eseguire questa istruzione.

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

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Abilitato

Abilita o disabilita il flusso di lavoro.

Priorità

Definisce la priorità dell'avviso.

1

Gravità

Definisce la gravità dell'avviso.

2

Element properties:

TargetMicrosoft.SQLServer.2012.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8938
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Errore di tabella: tipo di pagina non previsto
{0}
Event LogApplication
CommentMom2012ID='{121A55A3-5324-47C2-BBF9-537DCD60C5C1}';MOM2012GroupID={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.2012.Table_error___Unexpected_page_type__1_5_Rule" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2012ID='{121A55A3-5324-47C2-BBF9-537DCD60C5C1}';MOM2012GroupID={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>8938</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.2012.Table_error___Unexpected_page_type__1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>