Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Ошибка в базе MS SQL

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

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

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


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

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

Опять эта вечная дилемма...
   basily
 
11 - 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 имён столбцов ?
   basily
 
21 - 16.02.21 - 08:36
(14) Мышой не удаляется... та же ошибка.
(15) Так больше некому. Сисадмин администрирующий SQL знает не больше меня.
(18) Бекапы есть и они живые - ТИИ проодит.  А на текущей нет.

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

(19) Попробую.
   ДенисЧ
 
22 - 16.02.21 - 08:37
(20) Так это и есть поля.
а записи - "Таблица пустая и не используется"
   Ёпрст
 
23 - 16.02.21 - 08:38
(22) Врят ли :), мот у него с терминологией туго ?
   basily
 
24 - 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
Хм. Может уже скриншоты выложить? Чтобы не было недопонимания.
   basily
 
29 - 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
в скриншоте
   basily
 
34 - 16.02.21 - 08:49
(28)(31) Сейчас нет доступа к базе. Будет через час. Тогда выложу.
   Михаил Козлов
 
35 - 16.02.21 - 10:19
Может вообще РС грохнуть?
   IVAL
 
36 - 16.02.21 - 10:54
Базу на корректность проверяли командой dbcc checkdb?
   Почему 1С
 
37 - 16.02.21 - 14:49
Скриншота так и нет, надеюсь с автором все хорошо
   basily
 
38 - 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 (или как-то так)?
   basily
 
40 - 17.02.21 - 16:45
(39) drop index _InfoRg27882_1 ON _InfoRg27882 GO
Та же ошибка :(
   Ёпрст
 
41 - 17.02.21 - 16:47
(40) переименовать его, тоже не даёт ?
   basily
 
42 - 17.02.21 - 16:51
(41) Что только не пытался сделать с индексом и самой таблицей. Всегда ошибка.
   Ёпрст
 
43 - 17.02.21 - 16:51
А ёпт..он же кластеризованный
   Ёпрст
 
44 - 17.02.21 - 16:51
Саму табличку даёт переименовать хоть ?
   basily
 
45 - 17.02.21 - 16:55
Развернул на другой машине. Результат - ноль.
(44) Таблицу не удалить, не переименовать, не изменить. В конфигураторе пытался удалить регистр сведений - теряется соединение с базой.
   Ёпрст
 
46 - 17.02.21 - 17:10
(45)
че пишет ?
EXEC sp_rename '_InfoRg27882', '_InfoRg27882_old';
   basily
 
47 - 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
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.
   H A D G E H O G s
 
48 - 17.02.21 - 17:25
Какая то фантастика.
   basily
 
49 - 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 с колонками
   basily
 
51 - 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)
   Itmaint
 
52 - 17.02.21 - 21:56
(3) это не 65 полей. Это поле составного типа, причем есть ощущение, что один из типов - строка.
Платформа так строит индексы.
   Itmaint
 
53 - 17.02.21 - 21:58
(52) не прав. фигнбю сморозил.
плохо прочитал... аннулирую (52)
   Ёпрст
 
54 - 17.02.21 - 21:59
(51) ну, хотя бы скриншот таблички регистра есть ?
   arsik
 
55 - 17.02.21 - 22:14
(51) Сами индексы в менеджмент студио дает открыть? Может там поля удалить?
   basily
 
56 - 18.02.21 - 07:56
(54) В 1С при попытке открыть регистр база вылетает.
(55) Если бы давал открыть поудалял бы раньше. Пишет ошибку.
   Йохохо
 
57 - 18.02.21 - 08:12
(56) версию мс скл пробовали поднять?
   basily
 
58 - 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с, а в скуле
 
 
   basily
 
61 - 18.02.21 - 09:04
В общем решил проблему средствами SQL через выгрузку и создание новой базы без этой таблицы. Правой мышой по базе - Задачи - Экспортировать данные... Открывается мастер экспорта. Метод нашёл здесь: http://catalog.mista.ru/1c/articles/1106210/. Благо база не большая и всё прошло относительно быстро.

Всем спасибо за участие!


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.