Ошибка в таблице: объект, индекс, страница — проверка не пройдена. Слот — недопустимое смещение.

Microsoft.SQLServer.2008.Table_error__Object_index_page_Test_failed._Slot___Offset_is__invalid_1_5_Rule (Rule)

Knowledge Base article:

Причины

На данной странице указанные области памяти имеют недопустимое смещение (ADDRESS) в соответствии с массивом слота памяти.

Сведения по каждому состоянию:

Состояние 102. Смещение слота указывается в заголовке страницы. TEST = "sorted [i].offset = PAGEHEADSIZE".

Состояние 102. Смещение слота указывается внутри области свободного пространства. TEST = "sorted [i].offset = m_freeData".

Решения

СБОЙ ОБОРУДОВАНИЯ

Выполните диагностику оборудования и устраните все найденные проблемы. Также просмотрите системный журнал и журнал приложений Microsoft® Windows NT®, а также журнал ошибок SQL Server™, чтобы узнать, не является ли эта ошибка результатом сбоя оборудования. Устраните все неполадки оборудования.

Если постоянно возникают проблемы с повреждением данных, попробуйте поменять местами некоторые компоненты оборудования, чтобы локализовать проблему. Убедитесь, что в данной системе на контроллере диска не включено кэширование записи. Если есть основания полагать, что это может быть источником неполадки, обратитесь к поставщику оборудования.

Наконец, может оказаться полезным переключение на совершенно новую аппаратную систему, включая переформатирование жестких дисков и переустановку операционной системы.

ВОССТАНОВЛЕНИЕ ИЗ РЕЗЕРВНОЙ КОПИИ

Если неполадка не связана с оборудованием и есть безошибочная резервная копия, восстановите базу данных из этой копии.

DBCC CHECKDB

Если безошибочная резервная копия недоступна, выполните инструкцию DBCC CHECKDB без предложений восстановления, чтобы определить область повреждения. DBCC CHECKDB выработает рекомендацию по использованию предложения восстановления. Затем выполните инструкцию DBCC CHECKDB с соответствующим предложением восстановления, чтобы устранить повреждение.

ПРЕДУПРЕЖДЕНИЕ: Если вы не уверены, к какому результату может привести выполнение команды DBCC CHECKDB с инструкцией восстановления для данных, свяжитесь с непосредственным поставщиком услуг поддержки перед выполнением инструкции.

Восстановление зависит от типа страницы (список типов страниц см. в описании ошибки 8938):

Любой тип страницы с идентификатором страницы NULL:

Отмените распределение страницы и заново создайте индекс, частью которого она была.

Любая нераспределенная страница:

Отмените распределение страницы и заново создайте индекс, частью которого она была.

Страница GAM, SGAM или ML_MAP_PAGE (если указан недокументированный вариант восстановления):

Переформатируйте и заново создайте такую страницу.

Страница DIFF_MAP_PAGE:

Переформатируйте такую страницу и очистите точечный рисунок.

Пометьте такую базу данных как не имеющую полной резервной копии, чтобы предотвратить создание разностных резервных копий до создания полной копии.

Страница PFS_PAGE и все остальные страницы распределения:

Восстановление невозможно.

ВНИМАНИЕ: При восстановлении возможна потеря данных.

Если выполнение инструкции DBCC CHECKDB с одним из предложений восстановления не устраняет неполадку, обратитесь к основному поставщику услуг технической поддержки.

Переопределяемые параметры

Название

Описание

Значение по умолчанию

Включено

Включает или отключает рабочий процесс.

Да

Приоритет

Определяет приоритет предупреждения.

1

Важность

Определяет серьезность предупреждения.

2

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8941
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Ошибка в таблице: объект, индекс, страница — проверка не пройдена. Слот — недопустимое смещение.
{0}
Event LogApplication
CommentMom2008ID='{7A6EE035-BBBA-4F17-8DA3-AA54D2C53CCD}';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__Object_index_page_Test_failed._Slot___Offset_is__invalid_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{7A6EE035-BBBA-4F17-8DA3-AA54D2C53CCD}';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>8941</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.Table_error__Object_index_page_Test_failed._Slot___Offset_is__invalid_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>