Имя: Пароль:
1C
 
Повреждена таблица. Подскажите как ее восстановить из копии средствами SQL?
0 evorle145
 
23.04.24
09:41
В рабочей базе некоторые документы не проводятся, выдает ошибку SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0x757ab996; actual: 0x0f5dc709). It occurred during a read of page (1:19760772) in database ID 9 at offset 0x000025b0d08000 in file 'D:\DATA\nameBase.mdf'.  

Запуск ТИИ обрывается на таблице AccumRgChngR10196 РегистрНакопления.НДСЗаписиКнигиПродаж

Подскажите, как эту таблицу восстановить из имеющейся копии базы средствами SQL?

Выгрузкой загрузкой данных еще не пробовал... Подскажите, стоит ли ей попробовать?
1 Волшебник
 
23.04.24
09:42
Снесите регистрацию изменений, потом пересоздайте узел обмена
2 Ёпрст
 
23.04.24
09:51
(0) если маленькая табличка, то truncate table + insert into select * from копия таблички
Если большая, то через булку.
В вашем случае, проще грохнуть все записи в этой табличке целиком (это всего лишь регистрация изменений)
3 Ёпрст
 
23.04.24
09:53
Хотя, если скуль не может ужо прочитать страничку, то там , скорее всего, не только эта табличка поломана.
Лечите базу (для начала, мдф/лдф копировать на другой диск)
4 evorle145
 
23.04.24
09:58
(1) (2) Понял! Подскажите, пожалуйста, как выглядит или должен выглядеть примерно запрос, который очистит все записи из таблицы AccumRgChngR10196 . Хочу попробовать на копии базы..
5 Mihenius
 
23.04.24
10:00
(0) Я бы еще дисковую подсистему всю проверил.
6 Волшебник
 
23.04.24
10:05
(4)
TRUNCATE TABLE AccumRgChngR10196


Ещё можно исключить регистр из плана обмена и провести реструктуризацию.
7 evorle145
 
23.04.24
10:28
(6) благодарю! на копии базы запустил, пока получил ошибку:

Msg 4701, Level 16, State 1, Line 2
Cannot find the object "AccumRgChngR10196" because it does not exist or you do not have permissions.

Completion time: 2024-04-23T00:15:12.6544529-07:00


права вроде у меня там полные: https://postimg.cc/DSTqwvRC
8 Ёпрст
 
23.04.24
10:32
(7) есть уверенность, что есть AccumRgChngR10196 в этой базе ?
9 Ёпрст
 
23.04.24
10:33
Имена табличек, почти всех, с _  начинаются. если че
10 evorle145
 
23.04.24
10:34
(8) да, конечно, вот, я ее вижу:
https://postimg.cc/V0PNW6qp
11 Ёпрст
 
23.04.24
10:35
(10) Проверьте зрение: _AccumRgChngR10196
12 Kongo2019
 
23.04.24
10:36
(10)То что ты ее видишь и то что она есть разные вещи.
13 evorle145
 
23.04.24
10:36
(9) (11) да, извините, переволновался... очистил... смотрю результат...
14 Ёпрст
 
23.04.24
10:37
Если не знаете, как писать, то там есть в визарде - скрипт табле ас, или селект топ 1000, заменяете потом на нужное.
15 evorle145
 
23.04.24
11:02
да, таблица AccumRgChngR10196 очистилась, провести счет фактуры теперь дает.

Но в списке битых таблиц оказались еще эти:
_Reference93 "Справочник.Склады"
_Document252_VT7285 "Документ.СчетНаОплатуПокупателю.Товары"
_Document133_VT18206 "Документ.ВводНачальныхОстатков.ТоварыВРозничнойТорговлеАТТ"
_Reference91 "Справочник.СерверыДокументооборота"

из них испольвались _Reference93  и _Document252_VT7285 ... очистить их нельзя... получается остается только один вариант копировать из копии?
16 Optan
 
23.04.24
11:10
(15) Может это вам частично поможет:
https://infostart.ru/1c/articles/192648/
17 Ёпрст
 
23.04.24
11:11
(15) как узнали ?
DBCC CHECKDB хотя бы делали ? Че кажет ?
18 evorle145
 
23.04.24
11:19
(17) вот как раз DBCC CHECKDB и подсказал, что эти таблицы имеют пробелмы...
19 evorle145
 
23.04.24
11:31
А почему если повреждена таблица _Document252_VT7285 "Документ.СчетНаОплатуПокупателю.Товары" то я могу сейчас записать/изменить любой существующий счет на оплату, но создать новый не могу?
Может нужна какая-то просто переиндексация этой таблицы?
20 Волшебник
 
23.04.24
11:39
База полностью разрушена. Кажется, диск сыпется.
21 evorle145
 
23.04.24
11:47
(20) база была восстановлена из mdf файла... все бэкапы были зашифрованы, остался только mdf . Установили новый сервер, установили sql, 1C сервер. При соединили этот mdf  файл. В итоге вроде все работает, но вот эти 4 таблицы... _Reference91 "Справочник.СерверыДокументооборота" - эта например, в 1с вообще не открывается,  эта "_Reference93 "Справочник.Склады" в 1с открывается, но новый склад создать невозможно. То самое с таблицей _Document252_VT7285 "Документ.СчетНаОплатуПокупателю.Товары"... А остальное-то вс е работает..
22 Волшебник
 
23.04.24
11:48
(21) Всё сносите и поднимайте заново из бэкапа
23 evorle145
 
23.04.24
11:50
(22) нет бэкапа достаточно свежего.. поэтому и подключали из mdf ...
24 Ёпрст
 
23.04.24
11:55
(21) склады, можно взять с копии, можн0 ручками прям в скуле поправить (не думаю, что у вас там больше 10 записей)
счет на оплату , с копии.
ЗЫ: ну или хотя бы чек с REPAIR_ALLOW_DATA_LOSS запустить
25 evorle145
 
23.04.24
11:58
(24) понял. Подскажите, пожалуйста, выгрузкой загрузкой xml из копии можно взять?  (копия еще только разворачивается, проверить не могу) Или это средствами sql в ssms  нужно делать? Если не трудно, намекните пример запросов на копирование таких таблиц. В гугле читаю - но пока нет уверенности, что понял как это сделать.
26 Ёпрст
 
23.04.24
12:18
(25) как угодно, в скуле быстрее просто.

truncate table [BaseName_1].[dbo].[_Document252_VT7285];

insert into [BaseName_1].[dbo].[_Document252_VT7285]
SELECT * FROM [BaseName_Copy].[dbo].[_Document252_VT7285]
27 Ёпрст
 
23.04.24
12:20
Это, если обе базы на одном сервере, если на разных, то сперва прилинковать сервер, потом запрос.
Можно и не писать это руками, а через импорт/экспорт.. тупо мышой в остнастке
28 evorle145
 
24.04.24
08:49
В итоге пока застряли на том, что ищем подходящий бэкап, чтобы из него копировать эти 4 битых таблицы...

Мне правда, не очень понятно, почему в базе все работает, но если я хочу создать новый склад, то валится с ошибкой повреждения данных таблиц sql. Ведь любой существующий склад 1с изменить дает. Почему так получается, что если таблица в sql по складам повреждена, почему туда новую запись нельзя сделать?
29 Волшебник
 
24.04.24
09:12
(28) снесите эти таблицы и постарайтесь жить без них
30 evorle145
 
24.04.24
10:07
(29) но это же таблица складов.. Ведь если снести их, то что будет в документах, где есть ссылки на эти склады?
Таблицу счетов на оплату, допустим, грохнуть можно...
31 Волшебник
 
24.04.24
10:09
(30) Создадите новые склады, перенесёте ссылки
32 arsik
 
24.04.24
10:11
(30) а в скуле дает селект по _Reference93, _Document252_VT7285 сделать?
Если дает, сделайте селект + транк + инсерт
Ну или выгрузите-загрузите в(из) DT
33 evorle145
 
24.04.24
10:22
(32) да, запрос
SELECT TOP (1000) [_IDRRef]
      ,[_Version]
      ,[_Marked]
      ,[_PredefinedID]
      ,[_ParentIDRRef]
      ,[_Folder]
      ,[_Code]
      ,[_Description]
      ,[_Fld1459]
      ,[_Fld1460RRef]
      ,[_Fld1461RRef]
      ,[_Fld1462RRef]
      ,[_Fld1463RRef]
      ,[_Fld11802]
  FROM [namebase].[dbo].[_Reference93]

выполняется. А что даст "селект + транк + инсерт"? типа выбрать таблицу и вставить ее саму в себя.. просто не очень понял идею?
34 evorle145
 
24.04.24
10:20
(31) понял, попробую на копии базы сейчас.

А снести таблицу складов это вы имеете ввиду так:
TRUNCATE TABLE _Reference93

?или ее удалить, а потом как то добавить новую?
35 Волшебник
 
24.04.24
10:21
(34) пофиг
36 arsik
 
24.04.24
10:23
(34)
1) Создаете временную таблицу селектом из поломанной
2) Удаляете поломанную
3) Селектом из временной создаете новую
примерно как то так
37 arsik
 
24.04.24
10:25
38 Ёпрст
 
24.04.24
11:22
(33) если селект из .[_Reference93] выполняется, но не даёт ввести новый, то скорее всего есть мусор в предопределенных данных - в табличке есть, в config нетуИли наеборот
39 Ёпрст
 
24.04.24
11:26
покажи картинку, чего кажет
select * from _Reference93
40 evorle145
 
24.04.24
12:42
(39) вот пожалуйста:
https://postimg.cc/JsX2dncq

и внизу еще написано, что запрос выполнен успешно

https://postimg.cc/GBJSd5fT
41 evorle145
 
24.04.24
12:43
(38) но это же справочник Склады.. База 1С БП... там же никогда не было предопределенных элементов.. Да и вторая таблица _Document252_VT7285 "Документ.СчетНаОплатуПокупателю.Товары" с тем же диагнозом. Новый счет на оплату не создать, старые редактировать дает.
42 arsik
 
24.04.24
12:54
(41) А индексы не пробовали пересоздать?
Вариант из (36) можно упростить. Без временной. Прям реальную таблицу создать в базе только с каким ни будь префиксом, потом удалить основную и переименовать созданную.
И насколько база большая? Может все же проще в dt, из dt?
43 evorle145
 
24.04.24
13:27
(42) понял! тоже думали над этим вариантом, будем пробовать его сегодня.

"И насколько база большая? Может все же проще в dt, из dt?" ТИИ не проходит, думаю что в dt Тоже не выгрузится.. размер 450ГБ. год назад в dt выгружал (7 часов выгружалось)
44 evorle145
 
24.04.24
13:28
(42) а можно индексы пересоздать по выбранным таблицам? подскажите, как это происходит? как это делать?
45 Ёпрст
 
24.04.24
13:46
(41) проапдейть табличку и избавься от null в полях, из там быть не должно
46 youalex
 
24.04.24
14:08
(45) Там isfolder 0
47 Ёпрст
 
24.04.24
14:25
(46) с телефончика не видно, еще и папки в папки есть..
Ну, копия таблички, перенос всего, без иерархии, для начала, так бы сделал.
Возможно, есть циклические ссылки в иерархии
48 evorle145
 
24.04.24
15:28
(45) подскажите плиз, что имеете ввиду под проапдейтить?

"избавься от null в полях, из там быть не должно" а там null не в элементах, а только в папках. То есть справочник склады иерархический, и там есть папки, вот для папок есть NULL в тех полях, где для группы реквизит не может быть указан...
49 Ёпрст
 
24.04.24
15:44
50 evorle145
 
26.04.24
10:12
подскажите плиз:
при проверке на логическую целостность, ругается на таблицу:

"AccRgAT1593"    ""    "РегистрБухгалтерии.Хозрасчетный"    "ИтогиПоСчетамССубконто1"


я могу ее очистить? Она заполнится в момент Пересчета итогов?


p.s. Сейчас на копии очищаю AccRgAT1593 , запускаю ТИИ и выполняется все кроме пункта "Реиндексация таблиц информационной базы". Я полагаю, это за битых таблиц по склады и СчетаНаОплату.Товары. (эти таблицы пока не удалось восстановить, бэкап пока не найден).
51 Волшебник
 
26.04.24
10:23
(50) все итоги по счетам формируются на базе проводок
52 evorle145
 
26.04.24
10:42
(51) а в какой момент? ну то есть если я очищу эту таблицу в sql, что что надо будет мне сделать, чтобы она заполнилась по новой?
53 Волшебник
 
26.04.24
10:42
(52) ТИИ / Пересчёт итогов
54 evorle145
 
26.04.24
10:45
(53) благодарю! тоже так думал (и на копии пересчет итогов прошел успешно), но перед тем как провернуть аналогичные действия на рабочей базе - решил подстраховаться)
55 Ёпрст
 
26.04.24
11:11
(54) 3 дня делаешь уже какой-то примитив. тебя там тапком не прибили еще ?
56 Волшебник
 
26.04.24
11:12
(55) Продажи стоят, наверное...
57 evorle145
 
26.04.24
11:18
(55) (56) да, сейчас мне не очень весело.. это точно.
58 Волшебник
 
26.04.24
11:39
(57) Вы тормоз продаж! Давно бы уже развернули базу хоть какую-то
59 Ёпрст
 
26.04.24
11:50
(57) (24) делали на копии этой базы хотя бы ?
60 evorle145
 
26.04.24
12:17
(58) продажи в другой базе.. не в 1С.. правда и там не все хорошо... (59) вот сегодня хочу сделать.. До этого REPAIR_ALLOW_DATA_LOSS  не запускал, потому что могут быть потери данных .. хотя на копии базы, наверное, можно попробовать..