|
Повреждена таблица. Подскажите как ее восстановить из копии средствами 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 не запускал, потому что могут быть потери данных .. хотя на копии базы, наверное, можно попробовать..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |