MSSQL 2014 : Erreur de table : type de page inattendu

Microsoft.SQLServer.2014.Table_error___Unexpected_page_type__1_5_Rule (Rule)

La page P_ID avait un type de page inattendu pour le code qui tentait de l'interpréter. La page étant marquée comme allouée, le code DBCC a tenté de l'interpréter.

Knowledge Base article:

Résumé

La page P_ID avait un type de page inattendu pour le code qui tentait de l'interpréter. La page étant marquée comme allouée, le code DBCC a tenté de l'interpréter.

Les différents types de pages sont les suivants :

1 - Page::DATA_PAGE : page de données dans un segment de mémoire ou un index cluster.

2 - Page::INDEX_PAGE : page d’index d’arbre B (B-tree) dans l’arborescence d’un index cluster ou non cluster, ou feuille d’un index non cluster.

3 - Page::TEXT_MIX_PAGE : page de texte partagée entre différentes structures de texte.

4 - Page::TEXT_TREE_PAGE : page de texte non partagée.

5 - Non utilisé.

6 - Page::WF_PAGE : page de fichier de travail.

7 - Page::SORT_PAGE : page utilisée dans des tris internes.

8 - Page::GAM_PAGE : plan d’allocation GAM.

9 - Page::SGAM_PAGE : plan d’allocation SGAM.

10 - Page::IAM_PAGE : page IAM (Index Allocation Map).

11 - Page::PFS_PAGE : page d’état d’allocation et d’espace libre.

12 - Non utilisé.

13 - Page::BOOT_PAGE : page d’informations à l’échelle de la base de données.

14 - Page::SYSCONFIG_PAGE : bloc de configuration de serveur.

15 - Page::FILEHEADER_PAGE : première page de chaque fichier.

16 - Page::DIFF_MAP_PAGE : bitmap différentielle pour un intervalle GAM.

17 - Page::ML_MAP_PAGE : carte d’étendue à enregistrement minimal pour un intervalle GAM.

Information par état :

État 1 : la page a été trouvée au niveau feuille d’une table système critique, mais il ne s’agissait pas d’une page de données de type = 1.

État 36 : la page avait un type de page tout à fait inconnu ou était marquée comme une page précédemment libérée par DBCC lors d’une opération de réparation. L’erreur est découverte lors d’une méthode Page::Audit.

État 300 : la page est une page de données de type = 1, mais elle appartient à un index non cluster.

État 301 : la page est une page d’index de type = 2, mais elle appartient à un segment de mémoire ou à un index de texte.

État 302 : la page est une page de texte de type = 3 ou 4, mais elle appartient à un segment de mémoire ou à un index cluster ou non cluster.

État 303 : cet état provient du code qui lit les pages qui seraient allouées à un index (c’est-à-dire des pages IAM ou des pages de données, des pages d’index ou des pages de texte marquées comme allouées à une page IAM). Le code a trouvé une page qui ne correspond à aucun de ces types. Examinez le type de page afin de déterminer celui qui a été trouvé

Solutions

PANNE MATÉRIELLE

Exécutez les diagnostics matériels et corrigez les éventuels problèmes rencontrés. Examinez également les journaux des applications et système Microsoft Windows NT ainsi que le journal des erreurs SQL Server afin de déterminer si l'erreur est le résultat d'une défaillance matérielle. Corrigez les problèmes liés au matériel.

Si vous continuez à rencontrer des problèmes d'incohérence des données, essayez de permuter des composants matériels pour isoler le problème. Assurez-vous que le cache d'écriture n'est pas activé sur le contrôleur de disque. Si vous pensez que c'est le cas, contactez le fournisseur du matériel.

Pour terminer, il peut être utile d'installer un tout nouveau système matériel, de reformater vos lecteurs de disque et de réinstaller votre système d'exploitation.

RESTAURATION À PARTIR D'UNE SAUVEGARDE

Si le problème n'est pas matériel et si une restauration réputée en bon état est disponible, restaurez la base de données à partir de la sauvegarde.

DBCC CHECKDB

Si aucune sauvegarde saine n'est disponible, exécutez DBCC CHECKDB sans clause de réparation pour déterminer l'étendue de la corruption. DBCC CHECKDB vous recommandera une clause de réparation. Ensuite, exécutez DBCC CHECKDB avec la clause de réparation adéquate afin de réparer les dégâts.

ATTENTION : si vous ne connaissez pas les conséquences sur vos données de l’exécution de DBCC CHECKDB avec une clause de réparation, contactez votre fournisseur d’assistance principal avant d’exécuter cette instruction.

Si l'exécution de DBCC CHECKDB avec l'une des clauses de réparation ne corrige pas le problème, contactez votre fournisseur d'assistance principal.

Paramètres remplaçables

Nom

Description

Valeur par défaut

Activé

Active ou désactive le flux de travail.

Oui

Priorité

Définit la priorité de l'alerte.

1

Severité

Définit la gravité de l'alerte.

2

Element properties:

TargetMicrosoft.SQLServer.2014.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8938
Event Source$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2014 : Erreur de table : type de page inattendu
{0}
Event LogApplication
CommentMom2014ID='{121A55A3-5324-47C2-BBF9-537DCD60C5C1}';MOM2014GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2014.Table_error___Unexpected_page_type__1_5_Rule" Target="SQL2014Core!Microsoft.SQLServer.2014.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2014ID='{121A55A3-5324-47C2-BBF9-537DCD60C5C1}';MOM2014GroupID={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">
<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="SQL2014Core!Microsoft.SQLServer.2014.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.2014.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>