MSSQL em Linux: erro de tabela: tipo de página inesperado

Microsoft.SQLServer.Linux.EventRule.DBEngine.Table_error___Unexpected_page_type__1_5_Rule (Rule)

A página P_ID tinha um tipo de página que não era esperado pelo código tentando interpretá-lo. A página está marcado como alocada, no entanto, motivo pelo qual o código DBCC está tentando interpretá-lo.

Knowledge Base article:

Resumo

A página P_ID tinha um tipo de página que não era esperado pelo código tentando interpretá-lo. A página está marcado como alocada, no entanto, motivo pelo qual o código DBCC está tentando interpretá-lo.

Os vários tipos de página são:

1 - Page::DATA_PAGE : uma página de dados em um heap ou em um índice clusterizado.

2 - Page::INDEX_PAGE : uma página de índice (árvore B) na árvore de um índice clusterizado ou não clusterizado, ou a folha de um índice não clusterizado.

3 - Page::TEXT_MIX_PAGE : uma página de texto compartilhada entre várias estruturas de texto.

4 - Page::TEXT_TREE_PAGE : uma página de texto não compartilhada.

5 - Não Utilizado.

6 - Page::WF_PAGE : uma página de arquivo de trabalho.

7 - Page::SORT_PAGE : uma página usada em classificações internas.

8 - Page::GAM_PAGE : um mapa de alocação GAM.

9 - Page::SGAM_PAGE: um mapa de alocação SGAM.

10 - Page::IAM_PAGE : IAM.

11 - Page::PFS_PAGE : Uma página de status de espaço livre e de alocação.

12 -Não Utilizado.

13 - Page::BOOT_PAGE : Uma página de informações no nível do banco de dados.

14 - Page::SYSCONFIG_PAGE : Um bloqueio de configuração de servidor.

15 - Page::FILEHEADER_PAGE : a primeira página de cada arquivo.

16 - Page::DIFF_MAP_PAGE : um bitmap diferencial para um intervalo GAM.

17 - Page::ML_MAP_PAGE : um mapa de extensão com registros mínimos para um intervalo GAM.

Informações por estado:

Estado 1: a página foi encontrada no nível folha de uma tabela crítica do sistema, mas não era uma página de dados do tipo = 1.

Estado 36: a página tinha um tipo de página não reconhecido ou está marcada como uma página que o DBCC desalocou anteriormente durante um reparo. O erro é descoberto durante a aplicação do método Page::Audit.

Estado 300: a página é uma página de dados do tipo = 1, mas pertence a um índice não clusterizado.

Estado 301: a página é uma página de índice do tipo = 2, mas pertence a um heap ou a um índice de texto.

Estado 302: a página é uma página de texto do tipo = 3 ou 4, mas pertence a um heap ou a um índice clusterizado ou não clusterizado.

Estado 303: este estado provém de um código que está lendo páginas aparentemente alocadas para um índice (ou seja, são páginas IAM, de dados, de índice ou de texto marcadas como alocadas para uma página IAM). O código encontrou uma página que não pertence a nenhum desses tipos. Examine o tipo de página para determinar o tipo de página encontrado

Resoluções

FALHA DE HARDWARE

Execute o diagnóstico de hardware e corrija quaisquer problemas. Além disso, examine os logs de sistema e de aplicativo do Linux e o log de erros do SQL Server para saber se o erro ocorreu devido a uma falha de hardware. Corrija os problemas relacionados ao hardware.

Se você tiver problemas persistentes de inconsistência de dados, tente alternar a retirada de diferentes componentes de hardware para isolar o problema. Certifique-se de que seu sistema não tenha cache de gravação habilitado no controlador de disco. Se você suspeitar que esse é o caso, entre em contato com o fornecedor do hardware.

Por fim, talvez seja útil mudar para um sistema de hardware completamente novo, incluindo a reformatação das unidades de disco e a reinstalação do sistema operacional.

RESTAURAR USANDO BACKUP

Se o problema não estiver relacionado ao hardware e um backup limpo conhecido estiver disponível, restaure o banco de dados do backup.

DBCC CHECKDB

Se nenhum backup limpo estiver disponível, execute DBCC CHECKDB sem uma cláusula de reparo para determinar a extensão da corrupção. DBCC CHECKDB recomendará uma cláusula de reparo para utilizar. Em seguida, execute DBCC CHECKDB com a cláusula de reparo apropriada para reparar a corrupção.

CUIDADO: caso não esteja certo do efeito que o DBCC CHECKDB com uma cláusula de reparo terá em seus dados, contate o provedor de suporte antes de executar essa instrução.

Se a execução de DBCC CHECKDB com uma das cláusulas de reparo não corrigir o problema, contate o provedor de suporte primário.

Parâmetros Substituíveis

Nome

Descrição

Valor Padrão

Habilitado

Habilita ou desabilita o fluxo de trabalho.

Sim

Intervalo (segundos)

O intervalo de tempo recorrente em segundos no qual executar o fluxo de trabalho.

300

Prioridade

Define a Prioridade do Alerta.

1

Gravidade

Define a Severidade do Alerta.

2

Tempo de Sincronização

Tempo de Sincronização

 

Tempo Limite (em segundos)

Especifica o tempo que o fluxo de trabalho pode para ser executado antes de ser fechado e marcado como falha.

200

Tempo limite da conexão de banco de dados (segundos)

O fluxo de trabalho falhará e registrará um evento, se ele não conseguir acessar o banco de dados durante o período especificado.

15

Element properties:

TargetMicrosoft.SQLServer.Linux.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL em Linux: erro de tabela: tipo de página inesperado
{0}
CommentMom2017ID='{121A55A3-5324-47C2-BBF9-537DCD60C5C1}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.SQLServer.Linux.DataSource.EventCollectionFiltered Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.Linux.EventRule.DBEngine.Table_error___Unexpected_page_type__1_5_Rule" Target="SqlDiscL!Microsoft.SQLServer.Linux.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{121A55A3-5324-47C2-BBF9-537DCD60C5C1}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Linux.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>8938</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Linux.EventRule.DBEngine.Table_error___Unexpected_page_type__1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>