Восстановление базы SQL

Форум 1С: Одинэс.Ру

Найти!

Восстановление базы SQL

Duke1C
02.06.2009 - 10:09
Имеем следующую прискорбную ситуацию:
База Бух на SQL2000 (размер MDF 6179328 Кб, LDF 838464 Кб). Гл.буху понадобилось добавить субконто на счет 57.1, я несколько дней отбрыкивался, мотивируя долгосрочностью, глобальностью сей процедуры и прочими доводами, пока не попросили "настоятельно".
Сегодня на сервере запустил Конфигуратор, добавил субконто, и при сохранении он свалился с сообщением:
Created unique index terminated because a duplicate key was found for index ID2. Most significant primary key is ' 5FT9 '. в таблице _1srcdoc
Копию, естественно, не сделав (руки оторвать бы мне за это, с головою вместе), понадеявшись на наш доблестный лицензионный Acronis, которым ежедневно на всех серверах архивируются данные. Да беде, как обычно одна не приходит, выяснилось, что Админко поменял пароль администратора на этом серваке довольно приличное время назад и Acronis перестал бэкапить данные с того времени.
К списку тем 1 2 > К списку форумов

Интересные темы

odines.ru
28.10.2020 - 10:57
Смотри также:
Невозможно запустить 1С ПУБ
Ошибка после обновления базы с 158 на 159
Не записывается файл в формате XLS

Re: Восстановление базы SQL

Duke1C
1 - 02.06.2009 - 10:16
sql-ных бэкапов нет ни одного (всегда Acronis выручал), хотя Recovery Model стоит - Full.
В QA пробовал запросами искать строки с дублирующимися индексами по методу из
http://www.forum.mista.ru/topic.php?id=9962
убивал их, но Конфигуратор по прежнему валится на той же самой ошибке, т.е
' 5FT9 ' не меняется.
Админ своих люлей уже выгреб, но легче от этого не становится...

Re: Восстановление базы SQL

USSR
2 - 02.06.2009 - 10:20
Думаю, что эту таблицу в принципе вообще можно прибить, она потом рассчитается сама при пересчете служебных данных, это таблица перекрестных ссылок (отборы, подчиненность)

Re: Восстановление базы SQL

ЖКК
3 - 02.06.2009 - 10:22
Что даст
select count (*) from _1srcdoc where id2='5FT9'

Re: Восстановление базы SQL

USSR
4 - 02.06.2009 - 10:24
Но вообще запросом с GROUP BY и HAVING м группировкой по выражению уникального ключа можно все найти и поправить

Re: Восстановление базы SQL

Duke1C
5 - 02.06.2009 - 10:24
Пробовал убивать строки с дублирующимися индексами и перед входом в Конфигуратор подсовывать "старый" MDшник и DDS - такая же байда

Интересные темы

odines.ru
28.10.2020 - 10:57
Смотри также:
реквизит типа "Документ"
УСН релиз 160. Как списать товар в производство?
как отредактировать в справочнике номенклатура форму элемента (убрать лишние кнопки)

Re: Восстановление базы SQL

ЖКК
6 - 02.06.2009 - 10:24
select count (*) from _1srcdoc where id2='5FT9'
А может и не id2. По какой/каким колонкам индекс?

Re: Восстановление базы SQL

USSR
7 - 02.06.2009 - 10:37
я так понимаю, что это второй индекс по конкатенации полей:
MDID,PARENTVAL,CHILDDATE,CHILDTIME,CHILDID

Re: Восстановление базы SQL

Duke1C
8 - 02.06.2009 - 10:38
(6)
#----Indexes------
# Name                           |Descr         |Unique|Indexed fields                                              |Type      
I=PK__1SCRDOC                    |ROW_ID        |1     |ROW_ID                                                      |1          
I=CHILD                          |Child Referenc|1     |CHILDID,MDID,PARENTVAL                                      |0          
I=PARENT                         |Parent Referen|1     |MDID,PARENTVAL,CHILD_DATE_TIME_IDDOC                        |0          

Re: Восстановление базы SQL

ЖКК
9 - 02.06.2009 - 10:39
(8) АААААААААААААААААААААААААааааа
select index_col('_1srcdoc',2,1)
ну и на фсякий
select index_col('_1srcdoc',2,2)

Re: Восстановление базы SQL

ЖКК
10 - 02.06.2009 - 10:42
7-USSR > А с вы уверены, что порядок колонок в таблице на MS SQL Server такой же как Вы написали?

Re: Восстановление базы SQL

Duke1C
11 - 02.06.2009 - 10:43
(9) В обоих случаях <NULL>

Re: Восстановление базы SQL

ЖКК
12 - 02.06.2009 - 10:45
exec sp_help '_1srcdoc'

Re: Восстановление базы SQL

Duke1C
13 - 02.06.2009 - 10:47
(12)Server: Msg 15009, Level 16, State 1, Procedure sp_help, Line 71
The object '_1srcdoc' does not exist in database 'Account_M'.

Re: Восстановление базы SQL

ЖКК
14 - 02.06.2009 - 10:50
А что это за таблица вообще?

Re: Восстановление базы SQL

ЖКК
15 - 02.06.2009 - 10:53
(0) >>В QA пробовал запросами искать строки
(13) >>The object '_1srcdoc' does not exist in database 'Account_M'.
Где искали?

Re: Восстановление базы SQL

USSR
16 - 02.06.2009 - 10:54
Не может она не существовать. Это таблица перекрестных ссылок, служебная таблица 1С

Re: Восстановление базы SQL

USSR
17 - 02.06.2009 - 10:56
(10)Я по ошибке выдернул из DBF-ного словаря, вот из DDS:
MDID,PARENTVAL,CHILD_DATE_TIME_IDDOC

Re: Восстановление базы SQL

Duke1C
18 - 02.06.2009 - 10:57
(15)->13 и в QA подключившись к соотв. серверу и выбрав базу через cange database (база так и называется Account_M)
и через EM через Tables? встаю на таблицу _1srcdoc, правой кнопкой мыши щёлкаю-> Open table-> Query

Re: Восстановление базы SQL

ЖКК
19 - 02.06.2009 - 10:58
(17) И Вы сейчас, глядя на ддс можете гарантировать, что порядок расположения столбцов на сервере аналогочен какому-то текстовому файлу?

Re: Восстановление базы SQL

Duke1C
20 - 02.06.2009 - 11:01
USSR да я знаю, что не может, да и вижу я её, но команда exec sp_help '_1srcdoc' выдает именно это:
Server: Msg 15009, Level 16, State 1, Procedure sp_help, Line 71
The object '_1srcdoc' does not exist in database 'Account_M'.
хотя если нажать кнопку Parse Query выдает
The command(s) completed successfully.
 

Re: Восстановление базы SQL

USSR
21 - 02.06.2009 - 11:02
(19)dds - это не какой-то текстовый файл, это словарь базы данных :) Могу гарантировать

Re: Восстановление базы SQL

USSR
22 - 02.06.2009 - 11:04
(20) SCRDOC,  а yt SRCDOC

Re: Восстановление базы SQL

USSR
23 - 02.06.2009 - 11:05
а _1srcdoc понятно не существует

Re: Восстановление базы SQL

Duke1C
24 - 02.06.2009 - 11:11
(19) Походу так оно и есть (т.е. не расположение столбцов на сервере а порядковые номера индексов), т.е. исходя из моего поста (8)
ID1 = ROW_ID
ID2 = CHILDID
ID3 = MDID
ID4 = PARENTVAL
ID5 = MDID
ID6 = PARENTVAL
ID7 = CHILD_DATE_TIME_IDDOC

Re: Восстановление базы SQL

ЖКК
25 - 02.06.2009 - 11:12
В (0) написано же  "в таблице _1srcdoc"
Так что за таблица все же?

Re: Восстановление базы SQL

Duke1C
26 - 02.06.2009 - 11:14
(23) USSR точно-точно :-)
вот результат exec sp_help '_1scrdoc':
ROW_ID
int no 4 10   0     no (n/a) (n/a) NULL MDID
int no 4 10   0     no (n/a) (n/a) NULL PARENTVAL
char no 23           no no no Cyrillic_General_CI_AS CHILD_DATE_TIME_IDDOC
char no 23           no no no Cyrillic_General_CI_AS CHILDID
char no 9           no no no Cyrillic_General_CI_AS FLAGS
tinyint no 1 3     0     no (n/a) (n/a) NULL

Re: Восстановление базы SQL

Duke1C
27 - 02.06.2009 - 11:16
(25) Это я грешник описАлся, конечно жн таблица ссылок _1scrdoc

Re: Восстановление базы SQL

ЖКК
28 - 02.06.2009 - 11:17
(23) exec sp_helpindex '_1scrdoc'

Re: Восстановление базы SQL

ЖКК
29 - 02.06.2009 - 11:20
27-Duke1C >
select index_col('_1scrdoc',2,1)
ну и на фсякий
select index_col('_1scrdoc',2,2)

Re: Восстановление базы SQL

Duke1C
30 - 02.06.2009 - 11:29
(28)
PK__1SCRDOC
clustered, unique, primary key located on PRIMARY ROW_ID

Re: Восстановление базы SQL

Duke1C
31 - 02.06.2009 - 11:30
(29) В обоих случая также <NULL>

Re: Восстановление базы SQL

ЖКК
32 - 02.06.2009 - 11:32
(30) одна строка?
(31) тогда полный результат exec sp_help '_1scrdoc' в студию

Re: Восстановление базы SQL

Duke1C
33 - 02.06.2009 - 11:37
(32) В виде картинки, для наглядности
http://slil.ru/27717950

Re: Восстановление базы SQL

ЖКК
34 - 02.06.2009 - 11:49
(33)
select count (*) from '_1scrdoc' where childid like '%5FT9%'

Re: Восстановление базы SQL

ЖКК
35 - 02.06.2009 - 11:50
(33)
select count (*) from '_1scrdoc' where parentval like '%5FT9%'

Re: Восстановление базы SQL

Duke1C
36 - 02.06.2009 - 11:53
Пока попробую пояснить более детально
Вобщем началось всё с ошибки (как я писал в сабже)
Created unique index terminated because a duplicate key was found for index ID2. Most significant primary key is ' 5FT9 '. в таблице _1scrdoc
Выполняю запрос:
SELECT [ROW_ID],
       [MDID],
       [PARENTVAL],
       [CHILD_DATE_TIME_IDDOC],
       [CHILDID],
       [FLAGS]
FROM [Account_M].[dbo].[_1SCRDOC]
WHERE [CHILDID] like '%5FT9%' выдает:
 
ROW_ID |MDID |PARENTVAL |CHILD_DATE_TIME_IDDOC |CHILDID|FLAGS
135894 |476  | B1 3P 5T | 20080731EAGG40  5FT9 | 5FT9 | 8
139552 |476  | B1 3P 5T | 20080731EAEAY8  5FT9 | 5FT9 | 1
511091 |16529| B1 34 5M | 20080731EAEAY8  5FT9 | 5FT9 | 1
Удаляю эти строки из таблицы, запускаю конфигуратор вываливает уже ошибку:
Created unique index terminated because a duplicate key was found for index ID7. Most significant primary key is ' 8BM7 ' Выполняю запрос:

Re: Восстановление базы SQL

ЖКК
37 - 02.06.2009 - 11:56
и?

Re: Восстановление базы SQL

Duke1C
38 - 02.06.2009 - 11:58
+36
SELECT [ROW_ID],
       [MDID],
       [PARENTVAL],
       [CHILD_DATE_TIME_IDDOC],
       [CHILDID],
       [FLAGS]
FROM [Account_M].[dbo].[_1SCRDOC]
WHERE [CHILD_DATE_TIME_IDDOC] like '%8BM7%' выдает:
 
ROW_ID |MDID |PARENTVAL |CHILD_DATE_TIME_IDDOC |CHILDID|FLAGS
115422 |476  |B1 3P SA  | 20080608BM7IGG  3M9C | 3M9C  | 9
242961 |476  |B1 3P 5T  | 20081231EAGG40  8BM7 | 8BM7  | 8
244850 |476  |B1 3P 5T  | 20081231EAEAY8  8BM7 | 8BM7  | 1
498816 |16529|U         | 20080608BM7IGG  3M9C | 3M9C  | 1
589189 |16529|B1 34 5M  | 20081231EAEAY8  8BM7 | 8BM7  | 1
Удаляю эти строки из таблицы, запускаю конфигуратор вываливает уже ошибку:
Created unique index terminated because a duplicate key was found for index ID7. Most significant primary key is ' 8VQZ ' Выполняю запрос:

Re: Восстановление базы SQL

USSR
39 - 02.06.2009 - 12:01
Ну так у тебя несколько нарушений, 1с вываливается на очередном первом.

Re: Восстановление базы SQL

Duke1C
40 - 02.06.2009 - 12:03
+36
SELECT [ROW_ID],
       [MDID],
       [PARENTVAL],
       [CHILD_DATE_TIME_IDDOC],
       [CHILDID],
       [FLAGS]
FROM [Account_M].[dbo].[_1SCRDOC]
WHERE [CHILD_DATE_TIME_IDDOC] like '%8VQZ%' выдает:
 
ROW_ID |MDID |PARENTVAL |CHILD_DATE_TIME_IDDOC |CHILDID|FLAGS
256598 |476  |B1 3P  5T | 20090111EAEAY8  8VQ2 | 8VQ2  |1
267599 |476  |B1 3P  5T | 20090111EAGG40  8VQ2 | 8VQ2  |8
608694 |16529|B1 34  5M | 20090111EAEAY8  8VQ2 | 8VQ2  |1
Удаляю эти строки из таблицы, запускаю конфигуратор
Запускается, в строке состояния пишет:
Создание индексов таблицы: Ссылки документов
Поиск ссылок документов: ...
Верификация процедур
Пересчет ссылок по графам отбора...
Пересчет перекрестных ссылок по документам...
Создание индексов таблицы: Ссылки документов
И валится с ошибкой как в сабже один в один
и запуская вышеуказанные запросы результаты точь в точь :(

Re: Восстановление базы SQL

USSR
41 - 02.06.2009 - 12:03
Надо делать не LIKE, а c HAVING COUNT(*) > 1

Re: Восстановление базы SQL

USSR
42 - 02.06.2009 - 12:04
Убей всю таблицу и не майся, я ж тебе сразу говорил

Re: Восстановление базы SQL

Duke1C
43 - 02.06.2009 - 12:07
в (34) результат 3
в (35) результат 0
что, наверно, можно понять из моих вышесказанных постов

Re: Восстановление базы SQL

Duke1C
44 - 02.06.2009 - 12:09
USSR спасибо большое, что не бросаете в трудную минуту
но куда вставить этот HAVING COUNT(*) > 1, я в sql, как...

Re: Восстановление базы SQL

Duke1C
45 - 02.06.2009 - 12:10
(42) т.е. если я правильно понимаю, убив таблицу запускаем Конфигуратор и она создается заново автоматически?

Re: Восстановление базы SQL

USSR
46 - 02.06.2009 - 12:16
(45)Да, она заново создается.
в конце запроса ...GROUP BY <индексное выражение> HAVING COUNT(*) > 1
Это будут все индексы  у которых группировка по индексному выражению неуникальна, сами записи чуть посложнее будет запрос

Re: Восстановление базы SQL

Duke1C
47 - 02.06.2009 - 12:32
выполнил
DELETE * FROM _1scrdoc
892121 записей
запускаю конфигуратор - таже самая ошибка
выполняю SELECT COUNT(*) FROM _1SCRDOC показывает тоже 892121

Re: Восстановление базы SQL

Duke1C
48 - 02.06.2009 - 12:58
+47, т.е.,опять же насколько я понимаю, у "какого-то" документа в "каком-то" поле, на основании, которого строится индекс, "что-то" поломалось, вследствии чего и не правильно формируется таблица _1scrdoc, но "неизвестных" слишком много, для меня во всяком случае, поэтому хелп ми плиз

Re: Восстановление базы SQL

ЖКК
49 - 02.06.2009 - 13:18
48-Duke1C > Лично я понятия не имею, ху из _1scrdoc, ибо не одноэснег.
Пригласите специалиста или профайлер в руки, и разбирать трассу.
*Шепотом* либо тригер попробовать повесить...

Re: Восстановление базы SQL

USSR
50 - 02.06.2009 - 13:20
Может у тебя в журнале _1SJOURN есть документы с одинаковым DATE_TIME_IDDOC ?
 
SELECT COUNT(*),DATE_TIME_IDDOC FROM _1SJOURN GROUP BY DATE_TIME_IDDOC HAVING COUNT(*) > 1
К списку тем 1 2 > К списку форумов
Тема закрыта и находится в архиве.
Но Вы можете начать новую тему.
« Зависание пр ипереносе документов Как подключить весы CAS к 1С? »
© 2009 Форум 1С: Одинэс.Ру