MSSQL 2016: Tabellenfehler: Slot, Zeile reicht in den freien Speicherplatz

Microsoft.SQLServer.2016.Table_error__Slot_row_extends_into_free_space__1_5_Rule (Rule)

Das Ende des Slots S_ID übersteigt den freien Speicherplatzoffset ADDRESS. TEST ist "max <= m_freeData", wobei der freie Speicherplatzoffset wenn "m_freeData" und das Ende von Slot S_ID "max" ist.

Knowledge Base article:

Ursachen

Das Ende des Slots S_ID übersteigt den freien Speicherplatzoffset ADDRESS. TEST ist "max <= m_freeData", wobei der freie Speicherplatzoffset wenn "m_freeData" und das Ende von Slot S_ID "max" ist.

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 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.

Die Reparatur hängt vom Seitentyp ab (suchen Sie in Fehler 8938 nach der Liste der Seitentypen):

Alle Seitentypen mit einer Seiten-ID von NULL:

Heben Sie die Zuordnung der Seite auf, und erstellen Sie alle Indizes neu, von denen die Seite ein Teil war.

Jede Seite ohne Zuordnung:

Heben Sie die Zuordnung der Seite auf, und erstellen Sie alle Indizes neu, von denen die Seite ein Teil war.

GAM-, SGAM-, oder ML_MAP_PAGE-Seite (wenn die nicht dokumentierte REPAIR-Option angegeben wird):

Formatieren und erstellen Sie die Seite erneut.

DIFF_MAP_PAGE-Seite:

Formatieren Sie die Seite erneut, und löschen Sie die Bitmap.

Stellen Sie die Datenbank als ohne vollständige Sicherung ein, wodurch differenzielle Sicherungen vermieden werden, bis eine vollständige Datenbanksicherung durchgeführt wurde.

PFS_PAGE-Seite und alle weiteren Zuordnungsseiten:

Es ist keine Reparatur möglich.

VORSICHT: Diese Reparatur kann zu Datenverlust führen.

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.

Parameter, die außer Kraft gesetzt werden können

Name

Beschreibung

Standardwert

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Priorität

Definiert die Warnungspriorität.

1

Schweregrad

Definiert den Warnungsschweregrad.

1

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8943
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: Tabellenfehler: Slot, Zeile reicht in den freien Speicherplatz
{0}
Event LogApplication
CommentMom2016ID='{7902A73F-B108-456A-8DA4-551FF9DBAAFF}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2016.Table_error__Slot_row_extends_into_free_space__1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{7902A73F-B108-456A-8DA4-551FF9DBAAFF}';MOM2016GroupID={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">
<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="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>8943</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.2016.Table_error__Slot_row_extends_into_free_space__1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>