Имя: Пароль:
1C
1С v8
Структура БД в MS SQL
0 Здравый_смысл
 
31.05.19
07:31
Возник такой вопрос - как получить соответствие таблиц объектам информационной базы, НЕ ИСПОЛЬЗУЯ ПолучитьСтруктуруХраненияБазыДанных(), не имея возможности зайти в пользовательском режиме в базу? В какой таблице хранится эта структура, есть ли что-то аналогичное семёрочному .DD?
1 Здравый_смысл
 
31.05.19
07:34
Как я понимаю, это таблица DBSchema, но в каком формате в ней хранятся данные? Тип поля - SerializedData.
2 Здравый_смысл
 
31.05.19
07:43
Сам спросил, сам ответил.

select cast(s.struct as varchar(max))
from (select cast(SerializedData as varbinary(max)) as struct
from dbo.DBSchema) s

Вот только названий объектов метаданных там нет.
Беда-печаль. Вопрос остаётся открытым.
3 Здравый_смысл
 
31.05.19
08:17
В общем, надо запись из Params where filename='DBNames' прогнать через deflate и сопоставлять с DBSchema.

Чо они там у Нуралиева курят, млин...
4 Сияющий в темноте
 
31.05.19
08:50
У них все текстовые данные в deflate хранятся с самого рождения и отказываться от этого они не хотят.
собственно,в dbschema будут идентификаторы,которые есть в метаданных,и по ним можно узнать кто есть что.
5 Здравый_смысл
 
31.05.19
08:55
Да я не про deflate, зачем надо было разносить структуру метаданных с идентификатором отдельно от dbschema? Нипаняятна.
6 Nuobu
 
31.05.19
08:58
Чтобы dbschema не росла.
7 Здравый_смысл
 
31.05.19
09:09
Не очень понятно, с чего ей расти, если просто добавить наименование объекта.

Лан, это лирика. Главное, понятно, куда копать.
8 H A D G E H O G s
 
31.05.19
09:52
Есть реализация deflate в самом sql?
Поделишься?
9 Здравый_смысл
 
31.05.19
09:57
(8) Пока рабочей не накопал, DECOMPRESS без CRC не работает, только если считать отдельной SP. Да и для моей задачи это избыточно, проще в файл сохранить и внешнюю тулзу использовать.
10 bvb
 
31.05.19
10:29
Вот текст генерящий запрос скл очищающий таблицу спр.
Текст генерится в 1С изапускается в меенеджмент студио

МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить("Справочник.bpЗаписиЖурналаИзменений");
    
    СтрSQL = "USE myBase_test";
    СтрSQL = "classica_tеst1";
    СтрSQL = СтрSQL + Символы.ПС;
    
    ТаблицаСтруктуры = ПолучитьСтруктуруХраненияБазыДанных(МассивОбъектов, Истина);
    
    Для Каждого Стр ИЗ  ТаблицаСтруктуры Цикл
                
        СтрSQL = СтрSQL + "DELETE  FROM" + "  " + Стр.ИмяТаблицыХранения;
        СтрSQL = СтрSQL + Символы.ПС;
                
    КонецЦикла;    
    
    Для Каждого Стр ИЗ  ТаблицаСтруктуры Цикл
                
        СтрSQL = СтрSQL + "SELECT *  FROM" + "  " + Стр.ИмяТаблицыХранения;
        СтрSQL = СтрSQL + Символы.ПС;
        
    КонецЦикла;    
    
    Сообщить(СтрSQL);
11 Здравый_смысл
 
31.05.19
10:31
(10) Я там в (0) указал, что в пользовательском режиме запустить базу возможности нет.
12 bvb
 
31.05.19
10:42
(12) Извини плохо читал.
Пытаешься проанализировать базу не имея пароля на вход ?
Или глюкнулась ?
13 Здравый_смысл
 
31.05.19
10:50
(12) Проблема дурацкая - не завершается обновление КА с 2.1 до 2.4, какой-то из обработчиков продолжает молотить несколько суток. Хочу выявить, что за обработчик, а дальше по обстоятельствам - либо править, либо отключать. Запустил снова с утра обновление, жду вот, когда останется одно фоновое задание, через скуль посмотреть, какие запросы оно генерит, из этих запросов вычислить объект метаданных. Второй вариант - в журнале регистрации сделать два отбора - по запущенным заданиям и по выполненным, разница покажет тот самый "долгий" обработчик. Последняя мысля чот не сразу в голову пришла, ну да ладно.
14 ildary
 
31.05.19
12:35
(13) а почему не откроете окно обновлений, там можно увидеть внизу имя метода, который завис.
15 Здравый_смысл
 
31.05.19
12:49
(14) Это где? Из доступных элементов управления только ссылка "Техническая информация о ходе обновления", по которой открывается журнал. А в журнале только информация о запущенных обработчиках, причём запускаются они фоновыми заданиями без какого-либо порядка. Я только через консоль вижу, что одно фоновое задание работает с 8 утра, другое с 9, третье с 10 и т.д.
16 bvb
 
31.05.19
13:00
(13) И что практически это даст ?
Поторопить обработчик ?
17 ildary
 
31.05.19
13:00
(15) в окне "Результаты обновления программы" есть кликабельная строка с количеством выполненных процедур обновления. Если по ней кликнуть, то откроется окно "Дополнительные процедуры обработки данных", в котором надо включить фильтр Показывать = "Выполняется" и смотреть вниз окна.
18 Здравый_смысл
 
31.05.19
13:04
(17) У меня висит модальное окно с прогресс-баром, застывшим на 100%, на этом окне ссылка на открытие журнала регистрации, больше ничего нет кликабельного.
19 Здравый_смысл
 
31.05.19
13:07
(16) Посмотреть, что он делает, возможно, оптимизировать; или отключить, а потом разбить выполнение на ночные регламентные задания, если эта обработка не является критичной для работы по нашим бизнес-процессам. Моя задача - уложить основное обновление в сутки, если что-то из вторичных процессов не будет работать два-три-пять дней, пока ночные обработки не закончатся - уже не так страшно, как недельный простой.
20 МихаилМ
 
31.05.19
14:37
21 МихаилМ
 
31.05.19
14:44
(0) я делал генератор сопоставления метаданных 1с и таблиц и полей бд ms sql

используйте clr сборку для разжатия dbnames и config  . на ис их полно (20)

для быстрого преобразования текста в таблицу используйте xml
22 xXeNoNx
 
31.05.19
15:29
(13)  А других вариков нет?
23 xXeNoNx
 
31.05.19
15:32
+(22) Например ТЖ + срубить сеанс там..., ну или еще как, не..?
Основная теорема систематики: Новые системы плодят новые проблемы.