По теме из базы знаний
- Автоматическое резервное копирование любой клиент-серверной базы 1С в формате DT с удалением сеансов, архивацией, изменением расширения (8.3.14+, расширение)
- Автоматическое создание файла обновления (пакетный режим). Обновлено (добавлена обработка УФ)
- Выгонялка пользователей + Быстрое сохранение копии базы (для SQL) Вер.2.0
- Как работает серверный вызов в 1С
- Зависание базы при создании/редактировании пользователей после конвертации базы с платформы 8.1 на 8.3
Найденные решения
Для подготовки копии базы к разработке или тестам я делал скрипт для MSSQL, который очищает самые большие таблицы вроде истории данных, конфиденциальную информацию и настройки. После разворачивания базы просто проходился по ней этим скриптом и получал нужный результат. Скрипт пишется под конкретную конфигурацию с указанием конкретных имен таблиц.
Пример:
И ещё была похожая задача - решить проблему путаницы рабочей и тестовых баз при переключении между RDP. Для этого я делал расширение, добавляющее в метаданные константу, в которой хранится имя рабочей базы к кластере. При первичном запуске базы константа заполняется текущим именем базы в кластере, которое можно получить при помощи метода СтрокаСоединенияИнформационнойБазы(), а если она уже заполнена, то её значение сравнивается с текущим именем базы в кластере. При несовпадении инициируется изменение цвета интерфейса на отличный от стандартного. Само собой разумеется, что никому не придет в голову создавать копию базы с именем, как у рабочей.
Пример:
--Скрипт генерирует запросы на очистку и последующее сжатие таблиц указанной базы данных
--Результат выполнения скрипта скопировать и выполнить как новый запрос
DECLARE @DataBase varchar(30)
SET @DataBase = 'erp-1234' --Указать имя базы
DECLARE @sql varchar(100)
set @sql = 'use ' + quotename(@DataBase)
exec (@sql)
SEL ECT 'USE [' + @DataBase + ']'
UNI ON ALL
SEL ECT 'TRUNCATE TABLE ' + name FR OM sys.objects WHERE type in (N'U') and name LIKE '%Document%' --Все документы
UNI ON ALL
SELECT 'TRUNCATE TABLE ' + name FR OM sys.objects WHERE type in (N'U') and name LIKE '%AccumRG%' --Все регистры накопления
UNI ON ALL
SELECT 'TRUNCATE TABLE _DataHistoryVersions' --ИсторияДанных
UNI ON ALL
SEL ECT 'TRUNCATE TABLE _DataHistoryLatestVersions1' --История данных платформа
UNION ALL
SEL ECT 'TRUNCATE TABLE _DataHistoryQueue0' --История данных платформа
UNION ALL
SEL ECT 'TRUNCATE TABLE _InfoRg34207' --История БСП
UNION ALL
SEL ECT 'DBCC SHRINKFILE (N''' + mf.name + N''' , 0)' --Сжатие базы и лога
FR OM
sys.master_files mf
JOIN sys.databases d
ON mf.database_id = d.database_id
WH ERE d.database_id > 4 and d.name = @DataBase
ПоказатьИ ещё была похожая задача - решить проблему путаницы рабочей и тестовых баз при переключении между RDP. Для этого я делал расширение, добавляющее в метаданные константу, в которой хранится имя рабочей базы к кластере. При первичном запуске базы константа заполняется текущим именем базы в кластере, которое можно получить при помощи метода СтрокаСоединенияИнформационнойБазы(), а если она уже заполнена, то её значение сравнивается с текущим именем базы в кластере. При несовпадении инициируется изменение цвета интерфейса на отличный от стандартного. Само собой разумеется, что никому не придет в голову создавать копию базы с именем, как у рабочей.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для подготовки копии базы к разработке или тестам я делал скрипт для MSSQL, который очищает самые большие таблицы вроде истории данных, конфиденциальную информацию и настройки. После разворачивания базы просто проходился по ней этим скриптом и получал нужный результат. Скрипт пишется под конкретную конфигурацию с указанием конкретных имен таблиц.
Пример:
И ещё была похожая задача - решить проблему путаницы рабочей и тестовых баз при переключении между RDP. Для этого я делал расширение, добавляющее в метаданные константу, в которой хранится имя рабочей базы к кластере. При первичном запуске базы константа заполняется текущим именем базы в кластере, которое можно получить при помощи метода СтрокаСоединенияИнформационнойБазы(), а если она уже заполнена, то её значение сравнивается с текущим именем базы в кластере. При несовпадении инициируется изменение цвета интерфейса на отличный от стандартного. Само собой разумеется, что никому не придет в голову создавать копию базы с именем, как у рабочей.
Пример:
--Скрипт генерирует запросы на очистку и последующее сжатие таблиц указанной базы данных
--Результат выполнения скрипта скопировать и выполнить как новый запрос
DECLARE @DataBase varchar(30)
SET @DataBase = 'erp-1234' --Указать имя базы
DECLARE @sql varchar(100)
set @sql = 'use ' + quotename(@DataBase)
exec (@sql)
SEL ECT 'USE [' + @DataBase + ']'
UNI ON ALL
SEL ECT 'TRUNCATE TABLE ' + name FR OM sys.objects WHERE type in (N'U') and name LIKE '%Document%' --Все документы
UNI ON ALL
SELECT 'TRUNCATE TABLE ' + name FR OM sys.objects WHERE type in (N'U') and name LIKE '%AccumRG%' --Все регистры накопления
UNI ON ALL
SELECT 'TRUNCATE TABLE _DataHistoryVersions' --ИсторияДанных
UNI ON ALL
SEL ECT 'TRUNCATE TABLE _DataHistoryLatestVersions1' --История данных платформа
UNION ALL
SEL ECT 'TRUNCATE TABLE _DataHistoryQueue0' --История данных платформа
UNION ALL
SEL ECT 'TRUNCATE TABLE _InfoRg34207' --История БСП
UNION ALL
SEL ECT 'DBCC SHRINKFILE (N''' + mf.name + N''' , 0)' --Сжатие базы и лога
FR OM
sys.master_files mf
JOIN sys.databases d
ON mf.database_id = d.database_id
WH ERE d.database_id > 4 and d.name = @DataBase
ПоказатьИ ещё была похожая задача - решить проблему путаницы рабочей и тестовых баз при переключении между RDP. Для этого я делал расширение, добавляющее в метаданные константу, в которой хранится имя рабочей базы к кластере. При первичном запуске базы константа заполняется текущим именем базы в кластере, которое можно получить при помощи метода СтрокаСоединенияИнформационнойБазы(), а если она уже заполнена, то её значение сравнивается с текущим именем базы в кластере. При несовпадении инициируется изменение цвета интерфейса на отличный от стандартного. Само собой разумеется, что никому не придет в голову создавать копию базы с именем, как у рабочей.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот