無法透過 RID 從分頁中擷取資料列,因為 slotid 無效:已被取代

Microsoft.SQLServer.2008.Cannot_retrieve_row_from_page_by_RID_because_the_slotid_is_not_valid_1_5_Rule (Rule)

Knowledge Base article:

摘要

此資料列所屬物件有錯誤時,會發生此錯誤。從該邏輯頁讀取特定資料列期間偵測到此問題。發生此錯誤的原因可能是:

硬體問題,特別是硬碟機、控制站或硬體寫入快取問題。

資料庫中的其他錯誤。

解決方式

執行 DBCC CHECKDB 以決定錯誤的全部範圍。另請檢查錯誤記錄檔中的其他錯誤,如常伴隨此錯誤出現的 25xx 訊息。

如果 DBCC CHECKDB 發出其他錯誤訊息,則解決這些訊息中的問題後,此錯誤可能會隨之解決。執行含有 REPAIR_REBUILD 子句的 DBCC CHECKDB 來修復損壞。

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

如果執行含有 REPAIR_REBUILD 子句的 DBCC CHECKDB 無法解決所有資料表錯誤問題,請檢查錯誤訊息中的分頁來決定受影響的資料表。如果該分頁與索引相關聯,您也許可以卸除然後重新建立索引來解決問題。如果此分頁為資料頁,且目前有完好備份可用,請從備份還原資料庫。

如果無備份可用,請選取將此資料表複製到另一個資料表或將資料大量複製出此資料表,卸除此資料表,然後重新建立此資料表,再選取將資料複製回此資料表。

如果懷疑硬體發生問題,請執行硬體診斷,並更正相關問題。完全重新安裝也許會很有幫助,包括重新格式化磁碟機,以及重新安裝作業系統。另請檢查 Microsoft® Windows NT® 應用程式記錄檔,確定是否因硬體失敗而導致此錯誤。

最後,請確定您系統未在磁碟控制卡上啟用寫入快取。如果懷疑此原因造成問題,請連絡硬體廠商。

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledFalse
Event_ID625
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
無法透過 RID 從分頁中擷取資料列,因為 slotid 無效
{0}
Event LogApplication
CommentMom2008ID='{4F5C29B3-E2EB-412A-8375-62D942E20CD4}';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.Cannot_retrieve_row_from_page_by_RID_because_the_slotid_is_not_valid_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="false" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{4F5C29B3-E2EB-412A-8375-62D942E20CD4}';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>625</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.Cannot_retrieve_row_from_page_by_RID_because_the_slotid_is_not_valid_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>