Имя: Пароль:
1C
1C 7.7
v7: Как сравнить параметры полей SQL двух таблиц базы ?
0 Холст
 
03.08.20
17:30
Есть две базы SQL для 1С 7.7
у них одинаковые таблицы, например SC172, но состав полей отличается (разная длина реквизитов или где-то нет какого-то поля)
Каким SQL запросом можно сравнить параметры полей этих таблиц, чтобы увидеть отличия ? файла *.dds и *.MD нет чтобы сравнить средствами конфигуратора 1С

Может у кого есть готовый скрипт
1 Холст
 
03.08.20
17:32
Цель - восстановление базы 1С по  базе данных SQL без файла MD/DDS  но с похожими типовыми файлами
2 trdm
 
03.08.20
17:35
Вытащи схему БД с SQL сервера и сравни.
3 trdm
 
03.08.20
17:40
4 lEvGl
 
гуру
03.08.20
17:41
в 8 в скл есть таблица со списком и описанием таблиц, в 7.7 тоже должны быть
5 Ёпрст
 
гуру
03.08.20
17:44
Где то валялся готовый скрипт, надо поискать
6 Ёпрст
 
гуру
03.08.20
17:53
Ну и..тупо на копии подсовываешь левый мд и словарик и делаешь Тии без исправления только с одной галкой, он те покажет , какие поля не те
7 Ёпрст
 
гуру
03.08.20
17:53
Хотя, скриптом в скуле мгновенно получишь это
8 Холст
 
03.08.20
17:59
Пока полувручную в обоих базах запрос
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS

WHERE 1=1
AND TABLE_NAME = 'SC172' --Имя таблицы
Order by TABLE_NAME
9 Ёпрст
 
гуру
03.08.20
18:09
(8) ну дык , в INFORMATION_SCHEMA.COLUMNS же всё есть, сравнивай, где table_name одинаковый в обеих базах, а data_type разный
10 Ёпрст
 
гуру
03.08.20
18:33
SELECT t1.TABLE_NAME,t1.COLUMN_NAME,
       t2.TABLE_NAME,t2.COLUMN_NAME
   FROM base1.INFORMATION_SCHEMA.COLUMNS as t1
   full outer join base2.INFORMATION_SCHEMA.COLUMNS as t2 on t1.TABLE_NAME = t2.TABLE_NAME and t1.DATA_TYPE = t2.DATA_TYPE and t1.COLUMN_NAME=t2.COLUMN_NAME
where t1.TABLE_NAME is null  or t2.TABLE_NAME is null
11 trdm
 
03.08.20
19:27
(8) Это долго. можно схему вытащить как в (3) и сравнить KDiff-om.
http://kdiff3.sourceforge.net/
а так долго провозишся.
12 Ёпрст
 
гуру
03.08.20
22:03
(11) да ну..запрос в (10) на упп базе миллисекунды выполняется
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс