Имя: Пароль:
1C
1С v8
Ошибка в базе MS SQL
,
0 basily
 
16.02.21
07:58
Невосстановимая ошибка.
Ошибка при выполнении запроса POST к pecypcy /e1cib/logForm:
по причине:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: индекс "_InfoRg27882_1" в таблице
"InfoRg27882" имеет 65 имен столбцов в списке ключей. Максимально возможное
значение для списка ключевых столбцов индекс равно 16.
HRESULT=80040E14, SQLSn: SQLSTATE=42000, state=3, Severity=10, native=1904,
line=1

Это регистр сведений "Распределение по территориям и условиям труда" в ЗКГУ 3. Таблица пустая и не используется.

Как починить базу?
1 ДенисЧ
 
16.02.21
07:59
Удалить все индексы, всё равно не используются.
2 Почему 1С
 
16.02.21
08:02
Это что кто то  увлекся индексированием реквизитов? Хотелось мне бы увидеть это чудо в 65 индексов
3 ДенисЧ
 
16.02.21
08:05
(2) Да просто 65 колонок в измерения впихнуди...
4 basily
 
16.02.21
08:08
(1)(2)(3) Я плохо знаю SQL. Штатными средствами не удаляется - та же ошибка и в SQL. В этой таблице всего 10 полей...!
5 Фрэнки
 
16.02.21
08:12
(4) База очень большая? Если нет, то :

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

Возможно, что проблема в ошибках из кэшей.
6 rphosts
 
16.02.21
08:12
(3) РС с 65 измерениями? Что за жесть!
7 Фрэнки
 
16.02.21
08:13
(4) // Штатными средствами не удаляется

А это какие средства были использованы?
8 basily
 
16.02.21
08:15
(5) База типовая. В файловом варианте ~12гиг. Не выгружается не из SQL не из конфигуратора. Изменить таблицу в конфигураторе не возможно - та же ошибка.
На крайний случай рассматриваю выгрузку-загрузку через ВыгрузкаЗагрузкаДанныхXML83.epf. Но это долго, а время дорого!

(7) Через консоль SQL.
9 basily
 
16.02.21
08:16
(6) Ответил в (4).
10 ДенисЧ
 
16.02.21
08:19
"Штатными средствами не удаляется"
"Через консоль SQL"

Опять эта вечная дилемма...
11 basily
 
16.02.21
08:23
(10) Я же написал, что SQL знаю плохо, по этому и обратился.
12 Ёпрст
 
16.02.21
08:24
(0) на все измерения/ресурсы/реквизиты индексирование включили ? :)
Поснимай это в пофигураторе и сохрани
13 Ёпрст
 
16.02.21
08:24
Можешь и в самом скуле явно удалить индексы.
14 Ёпрст
 
16.02.21
08:24
мышой
15 ДенисЧ
 
16.02.21
08:25
(11) А зачем тогда в "консоль SQL" полез, раз не знаешь?
16 Ёпрст
 
16.02.21
08:27
(4)  >>>В этой таблице всего 10 полей...!-

truncate table _InfoRg27882_1
17 ДенисЧ
 
16.02.21
08:29
(16) Полей, а не записей )))
18 Фрэнки
 
16.02.21
08:30
(8) Т.е. у вас даже бакапов базы нет? Нет тестовой копии? Архивных копий прошлых лет?

Это же ЗКГУ - там прошлые года обычно требуют расчетчики, чтоб видеть именно состояния в том виде, как они были актуальны.

Если копия есть - затрави на нее ТИИ. На актуальных платформах, соотв. требованиям конфигураций, ТИИ в серверном режиме весьма мощная штука. Но только на копии, чтоб оценить последствия.
19 Ёпрст
 
16.02.21
08:31
выполни это в скуле.
Если записи нужны, то тупо переименовываешь табличку в скуле (например в _InfoRg27882_1_old), потом на ней пкм - создать сценарий для таблички - create - новое окно запроса, там меняешь имя на старое (_InfoRg27882_1), выполняешь запрос, создастся новая пустая табличка со старым именем. В 1с-ине в пофигураторе сымаешь нахрен индексирование со всех ресурсов, сохраняешь, далее в скуле делаешь запрос

insert into _InfoRg27882_1 select * from _InfoRg27882_1_old
усё
20 Ёпрст
 
16.02.21
08:32
(17) думаешь ?
а откуда тогда 65 имён столбцов ?
21 basily
 
16.02.21
08:36
(14) Мышой не удаляется... та же ошибка.
(15) Так больше некому. Сисадмин администрирующий SQL знает не больше меня.
(18) Бекапы есть и они живые - ТИИ проодит.  А на текущей нет.

Проблема появилась после сбоя в электроснабжении.

(19) Попробую.
22 ДенисЧ
 
16.02.21
08:37
(20) Так это и есть поля.
а записи - "Таблица пустая и не используется"
23 Ёпрст
 
16.02.21
08:38
(22) Врят ли :), мот у него с терминологией туго ?
24 basily
 
16.02.21
08:38
(22) (23) Это таблица индексов, а не записей.
25 Ёпрст
 
16.02.21
08:40
(24) ;)

select Count(*) from _InfoRg27882_1  

чего возвращает хоть ?
26 Ёпрст
 
16.02.21
08:40
в пофигураторе, сколько измерений/ресурсов/реквизитов ?
27 Ёпрст
 
16.02.21
08:40
у этого РС
28 Галахад
 
гуру
16.02.21
08:43
Хм. Может уже скриншоты выложить? Чтобы не было недопонимания.
29 basily
 
16.02.21
08:44
(26)(27) Измерений - 5, Ресурсов - 5, Реквизитов - 0. Это без стандартных. Сам регистр - ПУСТОЙ!
30 Фрэнки
 
16.02.21
08:45
Если копии базы рабочие, тогда просто подменить базу из СУБД на той записи в кластере, которая нужна для всех пользователей и все.

Сам вопрос с поломкой таблы интересный... наверное... но пользователям нужно где-то в чем-то работать
31 Ёпрст
 
16.02.21
08:46
(29) ну тогда покажи состав индекса InfoRg27882_1
32 Ёпрст
 
16.02.21
08:47
и все столбцы таблички InfoRg27882
33 Ёпрст
 
16.02.21
08:47
в скриншоте
34 basily
 
16.02.21
08:49
(28)(31) Сейчас нет доступа к базе. Будет через час. Тогда выложу.
35 Михаил Козлов
 
16.02.21
10:19
Может вообще РС грохнуть?
36 IVAL
 
16.02.21
10:54
Базу на корректность проверяли командой dbcc checkdb?
37 Почему 1С
 
16.02.21
14:49
Скриншота так и нет, надеюсь с автором все хорошо
38 basily
 
17.02.21
16:36
Извините, за задержку, раньше не мог.
(
33)(37)Итак скриншот при попытке открыть состав индекса и попытке удалить индекс: https://yapx.ru/v/LGkce
(36) Да. Даже с аргументом REPAIR_ALLOW_DATA_LOSS получаю ошибку:
"Сообщение 1904, уровень 16, состояние 3, строка 2
индекс "_InfoRg27882_1" в таблице "_InfoRg27882" имеет 65 имен столбцов в списке ключей. Максимально возможное значение для списка ключевых столбцов индекс равно 16."
39 ДенисЧ
 
17.02.21
16:38
написать в консоли drop index _InfoRg27882_1 (или как-то так)?
40 basily
 
17.02.21
16:45
(39) drop index _InfoRg27882_1 ON _InfoRg27882 GO
Та же ошибка :(
41 Ёпрст
 
17.02.21
16:47
(40) переименовать его, тоже не даёт ?
42 basily
 
17.02.21
16:51
(41) Что только не пытался сделать с индексом и самой таблицей. Всегда ошибка.
43 Ёпрст
 
17.02.21
16:51
А ёпт..он же кластеризованный
44 Ёпрст
 
17.02.21
16:51
Саму табличку даёт переименовать хоть ?
45 basily
 
17.02.21
16:55
Развернул на другой машине. Результат - ноль.
(44) Таблицу не удалить, не переименовать, не изменить. В конфигураторе пытался удалить регистр сведений - теряется соединение с базой.
46 Ёпрст
 
17.02.21
17:10
(45)
че пишет ?
EXEC sp_rename '_InfoRg27882', '_InfoRg27882_old';
47 basily
 
17.02.21
17:20
(46) Ошибка:
Сообщение 1904, уровень 16, состояние 3, процедура sp_rename, строка 310
индекс "_InfoRg27882_1" в таблице "_InfoRg27882" имеет 65 имен столбцов в списке ключей. Максимально возможное значение для списка ключевых столбцов индекс равно 16.
Сообщение 596, уровень 21, состояние 1, строка 0
Не удалось продолжить выполнение, поскольку сеанс находится в состоянии завершения.
Сообщение 0, уровень 20, состояние 0, строка 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.
48 H A D G E H O G s
 
17.02.21
17:25
Какая то фантастика.
49 basily
 
17.02.21
17:33
(48) К сожалению реальность.. :(
Думаю создать пустую базу средствами 1С и найти скрипт на sql, который перенесёт данные в пустую базу кроме битой таблицы.
50 Ёпрст
 
17.02.21
17:58
(49) для этого в 1с ничего делать не надо

а так ?

ALTER INDEX _InfoRg27882_1 ON _InfoRg27882 REBUILD

или так

ALTER INDEX _InfoRg27882_1 ON _InfoRg27882 REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON)

И покажи скриншот таблички _InfoRg27882 с колонками
51 basily
 
17.02.21
21:07
(50)

Первое:
Сообщение 1904, уровень 16, состояние 3, строка 1
индекс "_InfoRg27882_1" в таблице "_InfoRg27882" имеет 65 имен столбцов в списке ключей. Максимально возможное значение для списка ключевых столбцов индекс равно 16.

Второе:
Сообщение 155, уровень 15, состояние 1, строка 2
COMPRESS_ALL_ROW_GROUPS не является известным параметром ALTER INDEX.

При попытке выбрать строки ошибка как в (47)
52 Itmaint
 
17.02.21
21:56
(3) это не 65 полей. Это поле составного типа, причем есть ощущение, что один из типов - строка.
Платформа так строит индексы.
53 Itmaint
 
17.02.21
21:58
(52) не прав. фигнбю сморозил.
плохо прочитал... аннулирую (52)
54 Ёпрст
 
17.02.21
21:59
(51) ну, хотя бы скриншот таблички регистра есть ?
55 arsik
 
гуру
17.02.21
22:14
(51) Сами индексы в менеджмент студио дает открыть? Может там поля удалить?
56 basily
 
18.02.21
07:56
(54) В 1С при попытке открыть регистр база вылетает.
(55) Если бы давал открыть поудалял бы раньше. Пишет ошибку.
57 Йохохо
 
18.02.21
08:12
(56) версию мс скл пробовали поднять?
58 basily
 
18.02.21
08:30
(57) Работаю на последней версии MS SQL Server 2012 sp3. На других не пробовал.
59 Йохохо
 
18.02.21
08:42
(58) попробуйте девелоперс эдишен 2016 и старше, хотя 65 и для них много
60 Ёпрст
 
18.02.21
08:52
(56) да не в 1с, а в скуле
61 basily
 
18.02.21
09:04
В общем решил проблему средствами SQL через выгрузку и создание новой базы без этой таблицы. Правой мышой по базе - Задачи - Экспортировать данные... Открывается мастер экспорта. Метод нашёл здесь: http://catalog.mista.ru/1c/articles/1106210/. Благо база не большая и всё прошло относительно быстро.

Всем спасибо за участие!
Закон Брукера: Даже маленькая практика стоит большой теории.