MSSQL em Linux: o hash já foi aplicado à página lógica no banco de dados

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

Este erro ocorre quando o SQL Server tenta aplicar o hash à página lógica \%S_PGID do banco de dados ID\%d e a página já está na tabela de hash do SQL Server.

Knowledge Base article:

Resumo

Este erro ocorre quando o SQL Server tenta aplicar o hash à página lógica %S_PGID do banco de dados ID%d e a página já está na tabela de hash do SQL Server.

Esse erro normalmente ocorre como efeito colateral de outros erros de dados que, em geral, podem ser detectados executando DBCC CHECKDB sem uma cláusula de reparo.

Resoluções

Examine o log de erros do SQL Server e execute DBCC CHECKDB com a cláusula de reparo apropriada no banco de dados. Se o erro envolver uma página de índice, use a cláusula REPAIR_REBUILD. Se o erro envolver uma página de dados, poderá ser necessário usar a cláusula REPAIR_ALLOW_DATA_LOSS. No possível evento que você não poderá permitir a perda de dados, será preciso executar a restauração de um backup limpo conhecido. Se o problema persistir, contate o provedor de suporte primário. Tenha a saída do DBCC CHECKDB disponíveis para análise.

Importante: se a execução do DBCC CHECKDB com uma das cláusulas de reparo não corrigir o problema do índice ou se você não estiver certo do efeito que o DBCC CHECKDB com uma cláusula de reparo surtirá em seus dados, contate o provedor de suporte.

Verifique com o fornecedor do hardware se o subsistema de disco usado pelo SQL Server apresenta níveis de firmware e de hardware recomendados e compatíveis no momento.

Se o DBCC CHECKDB não encontrar nenhum erro ou se erros forem encontrados e corrigidos para que as instruções DBCC subsequentes não indiquem erros, mas esse erro ocorrer novamente, contate o provedor de suporte primário. Deixe os logs de erro do SQL Server e a saída de DBCC CHECKDB e de sp_configure disponíveis para análise.

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.

1

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 SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL em Linux: o hash já foi aplicado à página lógica no banco de dados
{0}
CommentMom2017ID='{1DEC4754-8DE3-475E-AE58-EE2760B8F1C5}';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.Logical_page_in_database_is_already_hashed_1_5_Rule" Target="SqlDiscL!Microsoft.SQLServer.Linux.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{1DEC4754-8DE3-475E-AE58-EE2760B8F1C5}';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>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>813</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Linux.EventRule.DBEngine.Logical_page_in_database_is_already_hashed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>