MSSQL on Linux: テーブル エラー: オブジェクト、インデックス、ページのテストに失敗しました。スロット - オフセットが無効です

Microsoft.SQLServer.Linux.EventRule.DBEngine.Table_error__Object_index_page_Test_failed._Slot___Offset_is__invalid_1_5_Rule (Rule)

指定されたスロットで、スロット配列に対応させると無効なオフセット (ADDRESS) がページ内にあります。

Knowledge Base article:

原因

指定されたスロットで、スロット配列に対応させると無効なオフセット (ADDRESS) がページ内にあります。

状態ごとの情報:

状態 102 : スロットのオフセットがページ ヘッダー内にあります。TEST は 'sorted [i].offset = PAGEHEADSIZE' です。

状態 102 : スロットのオフセットが空き領域内にあります。TEST は 'sorted [i].offset = m_freeData' です。

解決方法

ハードウェア障害

ハードウェア診断を実行して問題を修正してください。また、Linux システム ログとアプリケーション ログ、および SQL Server エラー ログをチェックして、ハードウェア障害の結果としてエラーが発生したかどうかを調べてください。ハードウェア関連の問題をすべて解決してください。

データの破損の問題が解決しない場合は、ハードウェア コンポーネントを他のものと交換し、問題の原因を特定するようにしてください。システムのディスク コントローラーで書き込みキャッシュが有効になっていないことを確認します。そのコンポーネントが問題であると思われる場合は、ハードウェア ベンダーに問い合わせてください。

最終的に、ディスク ドライブを再フォーマットし、オペレーティング システムをインストールし直して、まったく新しいハードウェア システムに切り替える方が良い場合があります。

バックアップからの復元

ハードウェア関連の問題ではなく、使用できる既知のクリーン バックアップがある場合は、そのバックアップからデータベースを復元してください。

DBCC CHECKDB

使用できるクリーン バックアップがない場合は、修復句を指定せずに DBCC CHECKDB を実行して、破損の範囲を判別してください。DBCC CHECKDB が、使用する修復句をお勧めします。その後、適切な修復句を指定して DBCC CHECKDB を実行し、破損を修復してください。

注意: 修復句を使用した DBCC CHECKDB がデータにどのような影響を与えるのか不明である場合は、このステートメントを実行する前に、サポート提供元にお問い合わせください。

修復は、ページの種類によって異なります (ページの種類の一覧については、エラー 8938 を参照してください):

ページ ID が NULL になる種類のページ:

ページの割り当てを解除し、そのページが属していたインデックスを再構築します。

非割り当てページ:

ページの割り当てを解除し、そのページが属していたインデックスを再構築します。

GAM、SGAM、または ML_MAP_PAGE ページ (非公開の修復オプションが指定されている場合):

ページを再フォーマットし、再構築します。

DIFF_MAP_PAGE ページ:

ページを再フォーマットし、ビットマップをクリアします。

完全バックアップがないものとしてデータベースを設定し、完全バックアップが作成されるまで差分バックアップが実行されないようにします。

PFS_PAGE ページとその他すべての割り当てページ:

修復できません。

注意: この修復を実行すると、データが失われることがあります。

いずれかの修復句を使用して DBCC CHECKDB を実行しても問題が解決しない場合は、サポート プロバイダーにお問い合わせください。

上書き可能なパラメーター

名前

説明

既定値

有効

ワークフローを有効または無効にします。

はい

間隔 (秒)

ワークフローを実行する定期的な実行間隔 (秒)。

300

優先度

アラートの優先度を定義します。

1

重要度

アラートの重要度を定義します。

2

同期時刻

同期時刻

 

タイムアウト (秒)

ワークフローが終了して失敗とマークされるまでの、ワークフローの許容実行時間を指定します。

200

データベース接続のタイムアウト (秒)

指定された期間中にデータベースにアクセスできない場合、ワークフローは失敗し、イベントが登録されます。

15

Element properties:

TargetMicrosoft.SQLServer.Linux.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL on Linux: テーブル エラー: オブジェクト、インデックス、ページのテストに失敗しました。スロット - オフセットが無効です
{0}
CommentMom2017ID='{7A6EE035-BBBA-4F17-8DA3-AA54D2C53CCD}';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__Object_index_page_Test_failed._Slot___Offset_is__invalid_1_5_Rule" Target="SqlDiscL!Microsoft.SQLServer.Linux.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{7A6EE035-BBBA-4F17-8DA3-AA54D2C53CCD}';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>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>8941</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__Object_index_page_Test_failed._Slot___Offset_is__invalid_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>