Имя: Пароль:
1C
1С v8
Ошибка в базе MSSQL
0 virtel
 
30.10.12
20:24
Добрый день,
стоит в терминале 8.2 + Сервер. База вертится на MSSQL2005 (20Гб). С недавнего времени начались тормоза при обработке запросов и проверке базы. Проверка конфигуратором длилась 3е суток, вместо положенных 2-3часов.

Вобщем сканирую базу в MSSQL Management studio, получаю:

Сообщение 2570, уровень 16, состояние 3, строка 1
Страница (1:131733), область памяти 27 идентификатора объекта 900966336, идентификатор индекса 1, идентификатор секции 72057680706863104, идентификатор единицы размещения 72057680631300096 (тип "In-row data"). Значение столбца "_Fld1827" выходит за пределы диапазона для типа данных "numeric". Обновите столбец, поместив допустимое значение.
Имеется 15292 строк на 417 страницах для объекта "_Document95_VT1812".
CHECKDB обнаружил 0 ошибок размещения и 1 ошибок согласованности в таблице "_Document95_VT1812" (идентификатор объекта 900966336).

Через SELECT вывел эту табличку, в ней 12к записей, и в этом столбце везде нули. Т.е. строку с ошибкой он мне не показывает.

Что можно придумать? Может выгрузить эту таблицу, удалить, а потом заново загрузить?
1 mehfk
 
30.10.12
20:37
посредством получитьструктурухранениябазыданных() узнай что это за столбец
2 virtel
 
02.11.12
00:54
У меня нет доступа к конфигуратору, да и не работал никогда с 1С.
Возможно-ли как-то изменить эту ячейку средствами MSSQL? Потому что в этом столбце во всех строках одни нули. 99.9% в этой ячейке тоже должен быть 0.
3 H A D G E H O G s
 
02.11.12
00:58
Напряги прогера 1С.
4 virtel
 
02.11.12
01:05
Я так понял, MSSQL не отдает 1Ске эту строку, поэтому он и не видит ошибки. Я тоже не могу вывести ошибку SELECT'ом из самой MSSQL.
5 упс
 
02.11.12
05:08
(0)
Ошибки, связанные с выходом за пределы допустимого диапазона
Msg 2570, Sev 16, State 3, Line 17
Page (1:1103587), slot 24 in object ID 34, index ID 1, partition ID 281474978938880, alloc unit ID 281474978938880 (type «In-row data»). Column «modified» value is out of range for data type «datetime». Update column to a legal value.
Эти ошибки показывают, что в столбце есть значения выходящие за пределы допустимого диапазона. Это может быть значение типа datetime, предполагающее, что с полуночи прошло больше 1440 минут, строка-Unicode, в которой количество байт не делится на 2, или float/real с неверным значением точности.
Проверка на эти ошибки не выполняется по умолчанию, для баз данных обновленных с версии SQL Server 2000 или более ранних, если перед этим ни разу не выполнялась команда DBCC CHECKDB со включенным параметром DATA_PURITY.
CheckDB не сможет исправить эти ошибки, поскольку неизвестно какие значения поставить взамен неправильных. Исправление таких ошибок не требует особых усилий, но выполняется вручную. Неправильные значения должны быть заменены на что-нибудь приемлимое. Основная проблема — это поиск неверных значений. В этой статье базы знаний есть пошаговая инструкция.
http://habrahabr.ru/post/136979/

Вот ссылка на базу знаний: http://support.microsoft.com/kb/923247
6 cw014
 
02.11.12
07:38
Без выяснения, что такое _Fld1827 не подскажут
7 МихаилМ
 
02.11.12
08:37
усли везде нули
то можно попробовать команду

update "_Document95_VT1812
set _Fld1827 = 0

естественно на копии