Linux 上的 MSSQL: 資料庫中的邏輯頁面已進行雜湊

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

當 SQL Server 嘗試雜湊資料庫 ID\%d 的邏輯頁面 \%S_PGID,但 SQL Server 雜湊表中已有該頁面時,即會發生此錯誤。

Knowledge Base article:

摘要

當 SQL Server 嘗試雜湊資料庫 ID%d 的邏輯頁面 %S_PGID,但 SQL Server 雜湊表中已有該頁面時,即會發生此錯誤。

此錯誤通常是因為其他資料錯誤而產生的副效應,通常執行 DBCC CHECKDB 但不用修復子句,即可偵測到此錯誤。

解決方式

請檢閱 SQL Server 錯誤記錄檔,並對資料庫執行 DBCC CHECKDB 且提供適當的修復子句。若此錯誤涉及索引頁面,請使用 REPAIR_REBUILD 子句; 若此錯誤涉及資料頁面,則需要使用 REPAIR_ALLOW_DATA_LOSS 子句。若無法容忍資料遺失,則需要從已知完好的備份進行還原。如果問題持續發生,請連絡主要的支援提供者,並請備妥 DBCC CHECKDB 提供的輸出供檢閱。

重要事項:如果執行含有其中一種修復子句的 DBCC CHECKDB 無法改正索引問題,或是不確定含有修復子句的 DBCC CHECKDB 會對資料產生何種影響,請連絡您的主要支援提供者。

請與硬體廠商確認 SQL Server 目前所使用的磁碟子系統,擁有目前支援及建議的韌體與硬體等級。

如果 DBCC CHECKDB 找不到任何錯誤; 或是如果找到了錯誤並加以修正,且後續 DBCC 陳述式未指出任何錯誤,但又重新出現此錯誤,則請連絡您的主要支援提供者。請提供 SQL Server 錯誤記錄檔以及 DBCC CHECKDB 與 sp_configure的輸出結果以供檢閱。

可覆寫的參數

名稱

描述

預設值

已啟用

啟用或停用該工作流程。

間隔 (秒)

每次重複執行工作流程之間的時間間隔 (秒)。

300

優先順序

定義警示優先順序。

1

嚴重性

定義警示嚴重性。

1

同步處理時間

同步處理時間

 

逾時 (秒)

指定流程被關閉及標示為失敗之前,允許執行的時間。

200

資料庫連線的逾時 (秒)

若工作流程無法在指定的期限之內存取資料庫,將會失敗並登錄一則事件。

15

Element properties:

TargetMicrosoft.SQLServer.Linux.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Linux 上的 MSSQL: 資料庫中的邏輯頁面已進行雜湊
{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>