|
Перевод большой базы в SQL. | ☑ | ||
---|---|---|---|---|
0
citrus
12.02.13
✎
10:43
|
Всем доброго дня.
Появилась задача перевести в SQL БП8 2.0 Сейчас база файловая, объем 20гб! При попытке загрузить в SQL пишет, что не уникальное значение пытается записаться в уникальную колонку и все валится. Сделали ТИИ, все пункты кроме пересчета итого и реструктуризации прошли. На этих пунктах валится по нехватки памяти. Чекбд ошибок не находит. Мы в тупике. Что делать? |
|||
1
Zebburius
12.02.13
✎
10:45
|
Попробуйте создать РБД, в которой второй узел на SQL, а потом через их синхронизацию (желательно не через файл, а какой-нибудь COM) проведите первоначальный обмен.
|
|||
2
Maxus43
12.02.13
✎
10:47
|
реструктуризацию надо бы всё таки. делайте на мощном компе с большим количеством мозгов
|
|||
3
ZanderZ
12.02.13
✎
10:47
|
(0) обрезать...
|
|||
4
Живой Ископаемый
12.02.13
✎
10:47
|
какое значение большая она или нет?
если была маленькой и такая же ошибка - как бы тему назвал? |
|||
5
citrus
12.02.13
✎
10:48
|
2) кол-во мозгов значения не имеет. запускали на сервере >15гб ОЗУ. Когда процесс !С съедает более 1.5 гб памяти вылетает ошибка.
|
|||
6
wise
12.02.13
✎
10:48
|
делай ВСЁ на х64
|
|||
7
Живой Ископаемый
12.02.13
✎
10:49
|
2(3) и что случится?
|
|||
8
H A D G E H O G s
12.02.13
✎
10:49
|
Текст ошибке в студию!
|
|||
9
wise
12.02.13
✎
10:50
|
6+ было ТАКЖЕ - помогло...
|
|||
10
citrus
12.02.13
✎
10:50
|
(3) пробовали свернуть. зависает на регистре РАСХОДЫУСН и так же по памяти валится. причем сворачиваем первые 2 месяца учета.
|
|||
11
krbIso
12.02.13
✎
10:50
|
(6)не поможет
(0)попробуйте найти эти неуникальные значения |
|||
12
citrus
12.02.13
✎
10:51
|
(6) делать на х64. 64 винда или 1С или все вместе? :)
|
|||
13
citrus
12.02.13
✎
10:51
|
(11) а где и как их искать?
|
|||
14
H A D G E H O G s
12.02.13
✎
10:52
|
(13) Мы бы сказали, если бы ты хотя бы текст ошибки написал, поклонник телепатов хренов.
|
|||
15
Maxus43
12.02.13
✎
10:53
|
в скуле найти можно, а вот в файловой я хз как)
|
|||
16
wise
12.02.13
✎
10:53
|
(12) винда
|
|||
17
H A D G E H O G s
12.02.13
✎
10:55
|
(15) Serg_1960 даже обработку писал под это дело.
|
|||
18
wise
12.02.13
✎
10:55
|
16+ ГДЕ ж ты клиента ТАКОГО(х64) возьмёшь...
|
|||
19
Maxus43
12.02.13
✎
10:55
|
(18) на линупсе) 8.3
|
|||
20
ДенисЧ
12.02.13
✎
10:57
|
создать новую базу на скуле.
Через выгрузку-загрузку xml перенести данные. |
|||
21
citrus
12.02.13
✎
10:59
|
(20) сколько будет весть такая XML'ка? нереально!
|
|||
22
H A D G E H O G s
12.02.13
✎
10:59
|
(20) Бугага.
Товарищь неосиливает переписать текст ошибки. Спасибо, пошел писать код в хорошем настроении. |
|||
23
МихаилМ
12.02.13
✎
11:01
|
(0)
если с скл разбираетесь, вот заготовка ddl триггера для отмены индекса v8: Ошибка в базе. Ошибка в таблице Config. |
|||
24
citrus
12.02.13
✎
11:02
|
(22) да успокойся ты умник. сейчас заливается и будет скрин ошибки.
|
|||
25
Maxus43
12.02.13
✎
11:03
|
(23) на этапе загрузки у них, базы как таковой на скуле нету...
|
|||
26
H A D G E H O G s
12.02.13
✎
11:04
|
(24) Я спокоен. Спасибо за заботу.
|
|||
27
ДенисЧ
12.02.13
✎
11:05
|
(21) кусками.
|
|||
28
МихаилМ
12.02.13
✎
11:08
|
(25)
база есть. таблиц нету |
|||
29
citrus
12.02.13
✎
11:19
|
(27) т.е. сначала перенести доки, потом еще их проводить же надо?
|
|||
30
ZanderZ
12.02.13
✎
11:20
|
(29) можно отдельно движения потом перенести
|
|||
31
citrus
12.02.13
✎
15:11
|
(30) ну это нереальная история.
|
|||
32
citrus
12.02.13
✎
15:11
|
Ребята, вот текст ошибки
Ошибка загрузки информационной базы. В информационную базу загружены не все данные по причине: Попытка вставки неуникального значения в уникальный индекс: Microsoft OLE DB Provider for SQL Server: The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo._AccRgAT2495' and the index name '_AccRgA2495_ByPeriod_TRRRRRRN'. The duplicate key value is (Jan 1 2001 12:00AM, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, 0). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1 |
|||
33
orefkov
12.02.13
✎
15:30
|
(0)
Можно попробовать взять это: http://infostart.ru/public/166557/ и ковырять файл базы данных, по таблице AccRgAT2495, искать, где дубли. Исправить. |
|||
34
H A D G E H O G s
12.02.13
✎
15:35
|
(32) Тупо найти этот регистр накопления и отключить по нему итоги.
|
|||
35
ДенисЧ
12.02.13
✎
15:43
|
(29) Сначала справочники. Потом доки. Видами и периодами. Сразу с движениями.
|
|||
36
1Сергей
12.02.13
✎
15:47
|
20 gb файловая? и она ещё не загнулась?
|
|||
37
ДенисЧ
12.02.13
✎
15:47
|
(36) Как видишь, уже загибается :-)
|
|||
38
citrus
12.02.13
✎
16:31
|
(37) вообще она еще жива и работает, но ооооооочень медленно )
|
|||
39
citrus
12.02.13
✎
16:32
|
(34) а как определить какой это регистр?
|
|||
40
citrus
12.02.13
✎
16:32
|
может вообще выключить итоги во всех и так переносить, а в sql е уже включить. О! идея! :)
что скажете? |
|||
41
Sammo
12.02.13
✎
16:50
|
(40) Или так
(39) Что-то вроде получитьструктурухраненияБД() |
|||
42
citrus
12.02.13
✎
21:51
|
Новости с фронта:
отключил итоги во всех регистрах попробовал сделать реструктуризацию, вышла ошибка переполнения памяти сделал сжатие - прошло нормально, база стала 15гб. выгрузил dt и при попытке залить в SQL опять вышла ошибка Ошибка загрузки информационной базы. В информационную базу загружены не все данные по причине: Попытка вставки неуникального значения в уникальный индекс: Microsoft OLE DB Provider for SQL Server: The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo._AccRgAT2495' and the index name '_AccRgA2495_ByPeriod_TRRRRRRN'. The duplicate key value is (Jan 1 2001 12:00AM, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, 0). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1 идеи есть? :) |
|||
43
H A D G E H O G s
12.02.13
✎
21:59
|
Я могу подключиться и глянуть.
|
|||
44
acsent
12.02.13
✎
22:02
|
(32) АААА, знакомая ошибка. У тебя в регистре бухгалтерии неправильные субконто стоят. Нужно сделать приведение типов
|
|||
45
acsent
12.02.13
✎
22:03
|
держи с барского плеча
http://sdrv.ms/12c3jHt |
|||
46
citrus
12.02.13
✎
22:33
|
(45) спасибо :) запустил, что-то обрабатывает. как будут новости сообщу :)
|
|||
47
Hmster
13.02.13
✎
00:11
|
вообще ТИИ должно было помочь.
учу как делать такую ошибку в бухе. берем бухию 20, где нет учета по складам. делаем документы с движениями по счетам ТМЦ. Включаем склады. Теперь если выгрузить ДТ и попробовать загрузить в скуль будет писать ошибку не уникальности индекса, но ТИИ нормально спасает |
|||
48
citrus
13.02.13
✎
00:45
|
(47) ТИИ валится на пересчете итогов и реструктуризации.
хотя когда итоги отключил, один фиг ошибка. |
|||
49
citrus
13.02.13
✎
00:46
|
(45) привел типы твоей обработкой и один фиг ошибка
Ошибка загрузки информационной базы. В информационную базу загружены не все данные по причине: Попытка вставки неуникального значения в уникальный индекс: Microsoft OLE DB Provider for SQL Server: The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo._AccRgAT2495' and the index name '_AccRgA2495_ByPeriod_TRRRRRRN'. The duplicate key value is (Jan 1 2001 12:00AM, 0x00000000000000000000000000000000, 0x00000000000000000000000000000000, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, 0). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1 |
|||
50
citrus
13.02.13
✎
00:47
|
настораживает в этой ошибке дата "Jan 1 2001 12:00AM" это запись такая где то в базе или документ на этой дате?
|
|||
51
H A D G E H O G s
13.02.13
✎
00:51
|
(50) Давай подключусь
|
|||
52
Demiurg
13.02.13
✎
00:51
|
пересчитайте итоги перед выгрузкой
|
|||
53
Serg_1960
13.02.13
✎
01:03
|
(имхо) Вообще-то это проблема даже не в индексах, или в итогах... Это "пустые" записи. Фича файловой - неуникальные значения в индексах не рушат базу, как в SQL.
PS: вон, в соседней ветке сижу, подсказываю как определить что за таблица глючная - v8: Слетела база 1с8 , не проходит проверку на целосность |
|||
54
Hmster
13.02.13
✎
01:07
|
(48) ТИИ при проверке логической и физической целостности, даже если оставить "не изменять" исправляет данную ошибку.
|
|||
55
citrus
13.02.13
✎
01:13
|
(51) давай. лучше завтра днем. через что амми или тим?
|
|||
56
H A D G E H O G s
13.02.13
✎
01:14
|
(55) Лучше Тим, стучи в аську
ICQ#: 374-881-272 |
|||
57
citrus
13.02.13
✎
01:16
|
(52) Вячеслав, я уже писал, что пересчет не работает. Падает по нехватке памяти. Правда я отключил потом итоги и все равно заливка в SQL падает.
|
|||
58
Demiurg
13.02.13
✎
01:19
|
возможно загрузиться в бд2, там отличия
возможно данные загрузились целиком уже, но не построились индексы из-за не уникальности, тогда нужно просто удалить дубль |
|||
59
Demiurg
13.02.13
✎
01:21
|
ВЫБРАТЬ
Подзапрос.Период, Подзапрос.Регистратор, <измерения>, СУММА(Подзапрос.КоличествоЗаписей) КАК КоличествоЗаписей ИЗ (ВЫБРАТЬ Хозрасчетный.Период КАК Период, Хозрасчетный.Регистратор КАК Регистратор, <измерения>, 1 КАК КоличествоЗаписей ИЗ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный) КАК Подзапрос СГРУППИРОВАТЬ ПО Подзапрос.Период, Подзапрос.Регистратор, <измерения> ИМЕЮЩИЕ СУММА(Подзапрос.КоличествоЗаписей) > 1 попробуйте найти такие записи |
|||
60
Hmster
13.02.13
✎
01:27
|
(0) хочешь сказать что проверка логической и ссылочной целостности не выдала тебе никаких сообщений?
у тебя стояло "только тестирование" или "тестирование и исправление" ??? |
|||
61
citrus
13.02.13
✎
01:28
|
(60) тестирование и исправление. ошибки были, но они поправились. загрузка все равно не проходит.
|
|||
62
citrus
13.02.13
✎
01:29
|
сейчас запустил ТИИ снова, поставил все галки кроме реинд и пересчет итогов. посмотрим, может что-то напишет про пустые графы.
|
|||
63
sanja26
13.02.13
✎
01:39
|
классификатор адресов предлагали очистить?
|
|||
64
Serg_1960
13.02.13
✎
01:49
|
"Не смешите мои копыта"(с)
Анекдот в тему: "Мотор не заводится. Я всё уже перепробывал - фары протирал, бампер пинал..." |
|||
65
sanja26
13.02.13
✎
01:54
|
))
|
|||
66
MadHead
13.02.13
✎
02:34
|
утилиту для теста файловых баз не пробовали запускать? ChkDBF или как-то так. Давно уже не доводилось файловые ковырять
|
|||
67
Hmster
13.02.13
✎
07:36
|
(66) в данном случае не помогает
(61) у меня в базе на скуле склады не включались, база была не маленькой, вот и пришлось извращаться. Проверка целостности мне помогла. |
|||
68
citrus
13.02.13
✎
08:08
|
ТИИ со всеми галками кроме Сжатия и Рестр прошло без ошибок, ТИИ с реструктуризацией сразу валится в ошибку.
см скрин http://s006.radikal.ru/i215/1302/eb/b0fed2879392.jpg значения NULL на каком этапе очищаются? может выгрузку загрузку в файл еще сделать, а потом уже в SQL? |
|||
69
Hmster
13.02.13
✎
10:12
|
(68) у тебя итоги и реструктуризацию не сделает. можешь не париться
|
|||
70
Hmster
13.02.13
✎
10:14
|
щас попробую в демке сделать
|
|||
71
Hmster
13.02.13
✎
11:03
|
в демке ситуацию не получилось смоделировать.
нашел журнал регистрации. вот что мне ТИИ писало Субконто регистров бухгалтерии. Хозрасчетный. Проверка уникальности записей В таблице AccRgED509 обнаружены неуникальные записи со значениями полей: Period = DATETIME(2011,4,25,15,38,37) Recorder = 173:A520001D7D04DC0211E081D31BEEB9B0 LineNo = 23 Kind = 448:BEE54541A4A688B745534FDD1DF6EB52 Correspond = 1 Неуникальность записей устранена |
|||
72
citrus
13.02.13
✎
11:10
|
это такой подробный отчет ТИИ дает? это при какой галке он такие неуникальности чистит?
|
|||
73
Hmster
13.02.13
✎
11:43
|
(72) при 2х галках проверки целостности. фишка в том что на демке модуляция проблемы не работает. я позже попробую еще.
я бы предложил тебе создать узел плана обмена и выгружать кусками с разделением по метаданным |
|||
74
H A D G E H O G s
13.02.13
✎
11:52
|
Здорово всем.
|
|||
75
citrus
13.02.13
✎
11:55
|
(74) привет. сейчас доеду до офиса и можно будет посмотреть.
|
|||
76
citrus
13.02.13
✎
14:00
|
(74) H A D G E H O G s я на связи как будет возможность стучи.
|
|||
77
МихаилМ
13.02.13
✎
14:36
|
+(23)
с учетом, что ошибка может быть в нескольких таблицах проще отключить создание всех уникальных индексов. при этом сохранить в таблицу tsql команды создания индексов. затем исполнить скрипты из таблицы с теми, которые не исполнятся разбираться персонально. тк в некоторых случаях записи нужно сгруппировать или удалить дубли или удалить совсем. в любом случае потребуется только 1 загрузка из dt |
|||
78
citrus
13.02.13
✎
15:17
|
(77) т.е. идея такая - при загрузке отключить формирование индексов и потом их сформировать отдельно?
но как отключить это процесс во время загрузки? |
|||
79
Hmster
13.02.13
✎
15:21
|
(78) а можешь не смотря на ошибку загрузки запустить базу и узнать какая таблица парит мозг через ПолучитьСтруктуруХраненияБазыДанных.
может его выгрузить в файл, потом очистить, потом загрузить? |
|||
80
citrus
13.02.13
✎
15:28
|
(79) вообще эта SQL база после такой глючной загрузки запускается и даже документы вроде все на месте.
Оборотки сравнить не получается, т.к. итоги отключил. Сейчас в SQL запустил процесс включения итогов, посмотрим чем закончится. Если включение итогов пройдет нормально, может так и оставить? Как можно проверить базу на пригодность к работе после такого перехода на SQL? |
|||
81
Hmster
13.02.13
✎
15:31
|
(80) логика подсказывает что регистр у тебя не мог весь загрузиться, вопрос были ли в очереди на загрузку еще какие-нибудь регистры или только этим обойдется...
|
|||
82
citrus
13.02.13
✎
15:33
|
(81) ну оборотка это и покажет, опять же ТИИ можно сделать может где битые ссылки остались.
так? |
|||
83
acsent
13.02.13
✎
15:34
|
там еще нужно лишние субконто удалять. моя обработка этого не делает.
Вот код из кд Для каждого СтрокаТаблицы Из Объект.Движения.Хозрасчетный Цикл ВидыСубконтоКУдалению = Новый Массив; Для Каждого ЭлементСубконто Из СтрокаТаблицы.СубконтоДт Цикл Если СтрокаТаблицы.СчетДт.ВидыСубконто.Найти(ЭлементСубконто.Ключ, "ВидСубконто") = Неопределено Тогда ВидыСубконтоКУдалению.Добавить(ЭлементСубконто.Ключ); КонецЕсли; КонецЦикла; Для каждого ВидСубконто Из ВидыСубконтоКУдалению Цикл СтрокаТаблицы.СубконтоДт.Удалить(ВидСубконто); КонецЦикла; ВидыСубконтоКУдалению.Очистить(); Для Каждого ЭлементСубконто Из СтрокаТаблицы.СубконтоКт Цикл Если СтрокаТаблицы.СчетКт.ВидыСубконто.Найти(ЭлементСубконто.Ключ, "ВидСубконто") = Неопределено Тогда ВидыСубконтоКУдалению.Добавить(ЭлементСубконто.Ключ); КонецЕсли; КонецЦикла; Для каждого ВидСубконто Из ВидыСубконтоКУдалению Цикл СтрокаТаблицы.СубконтоКт.Удалить(ВидСубконто); КонецЦикла; |
|||
84
citrus
13.02.13
✎
15:34
|
а вообще крайняя идея это РИБ.
надо будет сегодня ночью попробовать запустить. |
|||
85
МихаилМ
13.02.13
✎
15:41
|
(78)
пример в (23) надо изменить для создания индекса. + логировать http://msdn.microsoft.com/ru-ru/library/ms173781.aspx |
|||
86
Hmster
13.02.13
✎
15:41
|
(84) вообще можно попробовать на копии переписать все движения по глючному регистру. может не много времени займет если в транзакции.
|
|||
87
citrus
13.02.13
✎
15:49
|
(86) это регистр бух хозрасчетный )))) 99% времени
|
|||
88
Hmster
13.02.13
✎
15:58
|
(87) через внешнее соединение долго будет перегружать движения? не пробовал. может так будет проще всего?
|
|||
89
romix
13.02.13
✎
16:03
|
У меня падала загрузка в 7-й базе, пока я не создал пустую конфу с константой и не загрузил поверх нее.
|
|||
90
citrus
13.02.13
✎
16:06
|
(89) "пустую конфу с константой" это как?
|
|||
91
МихаилМ
13.02.13
✎
17:36
|
это (90) это ромикс приивсем моем уважении
не угадал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |