Tabellenfehler: Fehlende Tabelle oder ungültiger Schlüssel im Index für die Zeile:

Microsoft.SQLServer.2008.Table_error__Table_missing_or_invalid_key_in_index_for_the_row__1_5_Rule (Rule)

Knowledge Base article:

Ursachen

Jede Datenzeile in einer Tabelle (Heap oder gruppierter Index) muss genau eine übereinstimmende Indexzeile in jedem nicht gruppierten Index über dieser Tabelle aufweisen. Dieser Fehler weist darauf hin, dass in einem nicht gruppierten Index eine Indexzeile fehlt.

Es wird eine begleitende 8955-Meldung angezeigt, die die Datenzeile und die Schlüssel der fehlenden Indexzeile identifiziert. Möglicherweise werden auch begleitende 8952- und 8956-Fehler angezeigt.

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 zu isolieren, falls Beschädigungsprobleme bei permanenten Daten 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 nicht genau wissen, wie sich das Ausführen von DBCC CHECKDB mit einer REPAIR-Klausel auf die Daten auswirkt, wenden Sie sich an Ihren primären Anbieter für technischen Support, bevor Sie diese Anweisung ausführen.

Mit REPAIR wird der Index neu erstellt. Wenn das Ausführen von DBCC CHECKDB mit einer der REPAIR-Klauseln das Problem nicht behebt, wenden Sie sich an Ihren primären Anbieter für technischen Support.

Wenn es sich bei der Seite um eine IAM-Seite handelt, wird die IAM-Kette, zu der die Seite gehört, bei der Reparatur neu erstellt, damit die Seite entfernt wird. Andernfalls wird die Zuordnung der Seite aufgehoben.

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8951
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Tabellenfehler: Fehlende Tabelle oder ungültiger Schlüssel im Index für die Zeile:
{0}
Event LogApplication
CommentMom2008ID='{E558B134-08BB-4D47-A655-D4E83D0D8D02}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2008.Table_error__Table_missing_or_invalid_key_in_index_for_the_row__1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{E558B134-08BB-4D47-A655-D4E83D0D8D02}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider" RunAs="SQL!Microsoft.SQLServer.SQLDefaultAccount">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>8951</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.Table_error__Table_missing_or_invalid_key_in_index_for_the_row__1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>