MSSQL в Windows: ошибка таблицы — ошибка проверки; слот накладывается на предыдущую строку

Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error___Test_failed._Slot_overlaps_with_the_prior_row_1_5_Rule (Rule)

Смещение области памяти S_ID в массиве смещений областей памяти не превышает конца предыдущей области памяти или равно ему, поэтому они перекрываются. TEST равен "sorted [i].offset >= max", где левая часть выражения означает ADDRESS, а "max" — конец предыдущей области памяти.

Knowledge Base article:

Причины

Смещение области памяти S_ID в массиве смещений областей памяти не превышает конца предыдущей области памяти или равно ему, поэтому они перекрываются. TEST равен "sorted [i].offset >= max", где левая часть выражения означает ADDRESS, а "max" — конец предыдущей области памяти.

Разрешения

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

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

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

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

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

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

DBCC CHECKDB

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

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

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

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

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

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

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

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

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

Страница DIFF_MAP_PAGE:

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

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

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

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

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

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

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

Имя

Описание

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

Включено

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

Да

Интервал (в секундах)

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

300

Приоритет

Определение приоритета оповещений.

1

Важность

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

1

Время синхронизации

Время синхронизации

 

Время ожидания (в секундах)

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

200

Время ожидания для подключения к базе данных (секунды)

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

15

Element properties:

TargetMicrosoft.SQLServer.Windows.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL в Windows: ошибка таблицы — ошибка проверки; слот накладывается на предыдущую строку
{0}
CommentMom2017ID='{9BCC85D0-C711-4365-A7EC-918096505BDA}';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___Test_failed._Slot_overlaps_with_the_prior_row_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{9BCC85D0-C711-4365-A7EC-918096505BDA}';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>8942</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___Test_failed._Slot_overlaps_with_the_prior_row_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>