Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.  [new]
KasKas
Guest
Здравствуйте

После перехода на MSSQL2012 стала вылазить (а с сегодняшнего дня ещё и мешать выполняться процедуре) ошибка "Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.".
DBCC CHECKDB запускал, говорит ошибок нет.
Индексы создавал/удалял, запускал процедуру вообще без индексов - та же история.
Вроде как ругается он на эту ошибку на строках:
SELECT max(Q)
FROM
tbl_ArcDays
WHERE
Date_Time <= @Date24
AND year(Date_Time) = year(@Date24)
AND SerialNumber = @SerialNumber
AND ID_Unit = @ID_Unit1
AND Q <> 0
---------------------------------------------------------------------------
или
---------------------------------------------------------------------------
SET @T_rab1 = (SELECT T_rab
FROM
tbl_ArcDays
WHERE
Date_Time = @Date1
AND SerialNumber = @SerialNumber
AND ID_Unit = @ID_Unit1)
---------------------------------------------------------------------------
или
---------------------------------------------------------------------------
SET @T_rab22 = (SELECT T_rab
FROM
tbl_ArcDays
WHERE
Date_Time = @Date22
AND SerialNumber = @SerialNumber
AND ID_Unit = @ID_Unit1
AND T_rab <> 0)

ну и другие подобные

Подскажите, что я делаю не так? И как надо делать?=)
2 сен 13, 09:01    [14782522]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
KasKas,

SELECT @@VERSION
?
2 сен 13, 09:12    [14782554]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.  [new]
KasKas
Guest
Виноват, забыл


Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
2 сен 13, 09:17    [14782571]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.  [new]
KasKas
Guest
при попытке

UPDATE STATISTICS tbl_ArcDays WITH FULLSCAN


тоже влетает эта же ошибка
2 сен 13, 09:34    [14782603]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
DBCC CHECKTABLE(tbl_ArcDays) WITH DATA_PURITY
2 сен 13, 09:36    [14782607]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.  [new]
KasKas
Guest
DBCC CHECKALLOC 

Тоже без ошибок
Таблица "tbl_ArcDays" идентификатор объекта 164195635.
Идентификатор индекса 1, идентификатор секции 72057594063945728, идентификатор единицы распределения 72057594068271104 (тип In-row data). FirstIAM (1:468558). Root (1:90386). Dpages 0.
Идентификатор индекса 1, идентификатор секции 72057594063945728, идентификатор единицы распределения 72057594068271104 (тип In-row data). Использовано 1911 страниц в 239 выделенных экстентах.
Идентификатор индекса 6, идентификатор секции 72057594069712896, идентификатор единицы распределения 72057594074038272 (тип In-row data). FirstIAM (1:60091). Root (1:1530). Dpages 572.
Идентификатор индекса 6, идентификатор секции 72057594069712896, идентификатор единицы распределения 72057594074038272 (тип In-row data). Использовано 577 страниц в 72 выделенных экстентах.
Идентификатор индекса 8, идентификатор секции 72057594069778432, идентификатор единицы распределения 72057594074103808 (тип In-row data). FirstIAM (1:60094). Root (1:2810). Dpages 475.
Идентификатор индекса 8, идентификатор секции 72057594069778432, идентификатор единицы распределения 72057594074103808 (тип In-row data). Использовано 480 страниц в 59 выделенных экстентах.
Общее число экстентов 370.

DBCC UPDATEUSAGE

без ошибок

а вот
DBCC CHECKTABLE (tbl_ArcDays) WITH DATA_PURITY

таки выдал ошибку!
автор
19 Страница (1:91846), слот 100, в объекте с идентификатором 164195635, идентификатором индекса 1, идентификатором секции 72057594063945728, идентификатором единицы распределения 72057594068271104 (тип "In-row data"). Значение столбца "Q" находится вне допустимого диапазона для типа данных "float". Замените значение столбца на допустимое. SQL.sql 29 1

А как теперь по этим космическим идентификаторам найти проблемные записи?
/у меня три ошибки вылезло, все для столбца Q, это значит у меня на всю таблицу три неправильных записи, так?/

И почему-то в чектэйбле только на Q ругается, а тот же Trab ему пофиг..
2 сен 13, 09:56    [14782664]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
KasKas,

Похоже, у вас точно такой случай, как описано здесь
2 сен 13, 10:11    [14782698]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.  [new]
KasKas
Guest
Большущее спасибо!
читаю=)
2 сен 13, 10:13    [14782712]     Ответить | Цитировать Сообщить модератору
 Re: Обнаружено возможное повреждение индекса. Запустите DBCC CHECKDB.  [new]
KasKas
Guest
Ещё раз спасибо Гость333!

У автора статьи очень приятный слог:)

Для тех, кому лень читать лишние строки и на аглицком:

1) Для таблицы, в которой возникает эта "ошибка индекса" запустить
DBCC CHECKTABLE (TableName) WITH DATA_PURITY

2) Если появятся ошибка вроде
19 Страница (1:91846), слот 100, в объекте с идентификатором 164195635, идентификатором индекса 1, идентификатором секции 72057594063945728, идентификатором единицы распределения 72057594068271104 (тип "In-row data"). Значение столбца "Q" находится вне допустимого диапазона для типа данных "float". Замените значение столбца на допустимое. SQL.sql 29 1
, то надо взять исходную таблицу в mssql2000 и скопировать её во временную таблицу, заменив тип проблемных полей на varchar
3) В полученной таблице сделать поиск по проблемным полям
where FieldName like '%#%'

4) Далее по ситуации: либо удалить эти строки из mssql2012, либо вручную ввести адекватные значения
3 сен 13, 02:56    [14787273]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить