MSSQL unter Windows: Tabellenfehler: Der niedrige Schlüsselwert auf der Seite entspricht nicht dem Schlüsselwert im übergeordneten Element.

Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error__The_low_key_value_on_page__is_not_the_key_value_in_the_parent_1_5_Rule (Rule)

Eine Seite auf Strukturebene (B-Struktur) enthält einen Datensatz für jede untergeordnete Seite und einen Schlüsselwert für diese untergeordnete Seite. Wenn sich die untergeordnete Seite auf Blattebene befindet (d. h. auf Ebene 0), müssen die Schlüsselwerte für alle Datensätze der Seite größer als der Schlüsselwert in der übergeordneten Seite bzw. gleich groß sein. Wenn sich die untergeordnete Seite auf Strukturebene befindet (d. h. auf einer Ebene > 0), müssen die Schlüsselwerte für alle Datensätze größer sein als der Schlüsselwert in der übergeordneten Seite, mit Ausnahme des ersten Datensatzes, dessen Schlüsselwert mit dem Schlüsselwert in der übergeordneten Seite identisch sein muss.

Knowledge Base article:

Ursachen

Eine Seite auf Strukturebene (B-Struktur) enthält einen Datensatz für jede untergeordnete Seite und einen Schlüsselwert für diese untergeordnete Seite. Wenn sich die untergeordnete Seite auf Blattebene befindet (d. h. auf Ebene 0), müssen die Schlüsselwerte für alle Datensätze der Seite größer als der Schlüsselwert in der übergeordneten Seite bzw. gleich groß sein. Wenn sich die untergeordnete Seite auf Strukturebene befindet (d. h. auf einer Ebene > 0), müssen die Schlüsselwerte für alle Datensätze größer sein als der Schlüsselwert in der übergeordneten Seite, mit Ausnahme des ersten Datensatzes, dessen Schlüsselwert mit dem Schlüsselwert in der übergeordneten Seite identisch sein muss.

Diese Meldung ist ein Hinweis darauf, dass der Vergleich fehlgeschlagen ist. Wenn der Wert für Ebene gleich 0 ist, befindet sich die Seite P_ID1 auf Blattebene. Vergleich ist ">=". Im Gegensatz dazu ist ein Wert für Ebene, der größer als 0 ist, ein Hinweis darauf, dass sich die Seite P_ID1 auf Strukturebene befindet. Vergleich ist in diesem Fall "==". In beiden Fällen befindet sich die Seite P_ID2 auf Strukturebene und ist die übergeordnete Seite für die Seite P_ID1.

Lösungen

HARDWAREFEHLER

Führen Sie eine Hardwarediagnose aus, und beheben Sie alle Probleme. Überprüfen Sie außerdem die Microsoft Windows NT-System- und -Anwendungsprotokolle und das SQL Server-Fehlerprotokoll, um zu ermitteln, ob der Fehler durch einen Hardwarefehler verursacht wurde. Beheben Sie alle hardwarebedingten Probleme.

Lagern Sie verschiedene Hardwarekomponenten aus, um das Problem einzugrenzen, falls dauerhaft Probleme mit Datenbeschädigungen auftreten. Stellen Sie sicher, dass der Schreibcache auf dem Datenträgercontroller im System nicht aktiviert ist. Wenn Sie vermuten, dass dies der Fall ist, wenden Sie sich an Ihren Hardwarehersteller.

Möglicherweise ist es auch hilfreich, auf ein vollständig neues Hardwaresystem umzusteigen und dabei die Laufwerke neu zu formatieren sowie das Betriebssystem neu zu installieren.

WIEDERHERSTELLEN AUS EINER SICHERUNG

Wenn das Problem nicht hardwarebedingt ist und eine bekanntermaßen fehlerfreie Sicherung zur Verfügung steht, stellen Sie die Datenbank mithilfe der Sicherung wieder her.

DBCC CHECKDB

Wenn keine fehlerfreie Sicherung verfügbar ist, führen Sie DBCC CHECKDB ohne REPAIR-Klausel aus, um den Umfang der Beschädigung zu ermitteln. Von DBCC CHECKDB wird eine zu verwendende REPAIR-Klausel empfohlen. Führen Sie DBCC CHECKDB anschließend mit der passenden REPAIR-Klausel aus, um die Beschädigung zu beheben.

VORSICHT: Wenn Sie sich nicht sicher sind, wie sich DBCC CHECKDB mit Reparaturklausel auf Ihre Daten auswirkt, wenden Sie sich an Ihren primären Anbieter für technischen Support, bevor Sie diese Anweisung ausführen.

Wenn das Problem durch Ausführen von DBCC CHECKDB mit einer der REPAIR-Klauseln nicht behoben werden kann, wenden Sie sich an Ihren primären Anbieter für technischen Support.

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Intervall (Sekunden)

Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an.

300

Priorität

Definiert die Warnungspriorität.

1

Schweregrad

Definiert den Warnungsschweregrad.

1

Synchronisierungszeit

Synchronisierungszeit

 

Timeout (Sekunden)

Gibt an, wie lange der Workflow ausgeführt werden kann, bevor er geschlossen und als fehlerhaft markiert wird.

200

Timeout für Datenbankverbindung (Sekunden)

Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann.

15

Element properties:

TargetMicrosoft.SQLServer.Windows.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL unter Windows: Tabellenfehler: Der niedrige Schlüsselwert auf der Seite entspricht nicht dem Schlüsselwert im übergeordneten Element.
{0}
CommentMom2017ID='{F467A6D8-3412-4760-8FD1-ABFDEAD2750B}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error__The_low_key_value_on_page__is_not_the_key_value_in_the_parent_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Comment="Mom2017ID='{F467A6D8-3412-4760-8FD1-ABFDEAD2750B}';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.Windows.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>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>8933</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error__The_low_key_value_on_page__is_not_the_key_value_in_the_parent_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>