Errore di tabella: il valore di chiave superiore nella pagina specificata non è minore del valore di chiave inferiore del padre in corrispondenza dello slot specificato nella pagina successiva

Microsoft.SQLServer.2008.Table_error__The_high_key_value_on_page_is_not_less_than_the_low_key_value_in_the_parent_slot_of_the_next_page_1_5_Rule (Rule)

Knowledge Base article:

Cause

Una pagina di un livello dell'albero B include un record per ogni pagina figlio, oltre a un valore di chiave per la pagina figlio specifica. Se la pagina figlio è a livello foglia, è necessario che i valori di chiave di tutti i record della pagina siano maggiori o uguali al valore di chiave della pagina padre. Se la pagina figlio è una pagina a livello di albero, è necessario che i valori di chiave di tutti i record siano maggiori del valore di chiave della pagina padre, ad eccezione del primo record, il cui valore di chiave deve corrispondere esattamente a quello della pagina padre.

Ne consegue che per la pagina padre P_ID2, con le pagine figlio P_ID1 e P_ID3, tutti i valori di chiave nella pagina P_ID1 devono essere minori del valore di chiave archiviato per la pagina P_ID3 nella pagina padre.

In questo caso, il valore di chiave più elevato della pagina P_ID1, ovvero le chiavi dell'ultimo record della pagina, non è minore del valore di chiave per la pagina P_ID3 archiviato nella pagina padre P_ID2.

Esistono tre possibili stati per questo messaggio (1, 2 e 3), tutti con lo stesso significato. L'unica differenza consiste nella posizione in cui viene individuato il problema nel codice.

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.

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, contattare il supporto tecnico prima di eseguire questa istruzione.

L'esecuzione di una correzione causerà la ricompilazione dell'indice. 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.

1

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8934
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Errore di tabella: il valore di chiave superiore nella pagina specificata non è minore del valore di chiave inferiore del padre in corrispondenza dello slot specificato nella pagina successiva
{0}
Event LogApplication
CommentMom2008ID='{A9F28860-B9F8-40C9-9367-47E50A7EA1E3}';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__The_high_key_value_on_page_is_not_less_than_the_low_key_value_in_the_parent_slot_of_the_next_page_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{A9F28860-B9F8-40C9-9367-47E50A7EA1E3}';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>8934</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.Table_error__The_high_key_value_on_page_is_not_less_than_the_low_key_value_in_the_parent_slot_of_the_next_page_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>