Сборник полезных скриптов: T-SQL, PowerShell и CMD для администратора
База данных - Администрирование СУБД
Данные скрипты оставляю здесь, чтобы не потерялись в дальнейшем.
T-SQL MS SQL Management studio
Этот SQL-запрос выполняет резервное копирование и восстановление базы данных в Microsoft SQL Server. Он включает в себя несколько ключевых шагов:
-
Объявление переменных: Переменные используются для хранения имен баз данных, путей к файлам резервных копий и команд SQL, необходимых для выполнения операций.
-
Установка значений переменных: Переменные инициализируются значениями, такими как имя базы данных, которую нужно скопировать, и имя базы данных, в которую нужно восстановить данные.
-
Создание базы данных, если она не существует: Проверяется наличие базы данных назначения, и если она отсутствует, создается новая база данных.
-
Создание резервной копии: Выполняется резервное копирование исходной базы данных в указанный файл.
-
Переключение базы данных в одиночный режим: База данных назначения переводится в одиночный режим, чтобы избежать конфликтов соединений во время восстановления.
-
Восстановление базы данных: База данных назначения восстанавливается из файла резервной копии, с указанием перемещения файлов данных и логов.
-
Переключение базы данных обратно в многопользовательский режим: После восстановления база данных переводится обратно в многопользовательский режим.
-
Удаление файла резервной копии: Проверяется наличие файла резервной копии, и если он существует, файл удаляется.
-
Удаление записи о резервной копии из msdb: Из системной базы данных
msdbудаляется запись о выполненной резервной копии, если она существует.
Дополнительные операции:
-
Уменьшение данных журнала (SHRINK): Процедура уменьшения размера журнала транзакций для освобождения неиспользуемого пространства.
-
Уменьшение данных журнала всех баз MSSQL: Выполнение операции SHRINK для всех баз данных на сервере.
-
Переименование базы данных: Изменение имени существующей базы данных.
-
Сжатие базы данных и лог файла: Уменьшение размера базы данных и лог файла, а также установка максимального размера лог файла.
-
Перевод всех баз в режим SIMPLE: Изменение режима восстановления всех баз данных на SIMPLE, что упрощает управление журналом транзакций, с последующим сжатием.
Эти операции помогают в управлении базами данных, обеспечивая их резервное копирование, восстановление, оптимизацию и настройку.
-- Объявление переменных
DECLARE @from NVARCHAR(MAX);
DECLARE @from_log NVARCHAR(MAX);
DECLARE @to NVARCHAR(MAX);
DECLARE @to_mdf NVARCHAR(MAX);
DECLARE @to_log NVARCHAR(MAX);
DECLARE @backup_result NVARCHAR(MAX);
DECLARE @backup_folder NVARCHAR(MAX);
DECLARE @BackupSetID INT;
DECLARE @alterSingle NVARCHAR(MAX);
DECLARE @alterMulti NVARCHAR(MAX);
DECLARE @restoreCmd NVARCHAR(MAX);
-- Установка значений переменных
SET @from = N'ИмяБазыОткуда'; -- что бэкапим
SET @to = N'ИмяБазыКуда'; -- куда восстанавливаем
SET @from_log = @from + '_log'; -- имя лог файла источника
SET @backup_folder = N'D:\Base\MSSQL14.MSSQLSERVER\MSSQL\Backup\'; -- каталог бэкапа
SET @backup_result = @backup_folder + @from + '.bak'; -- имя бэкап файла
SET @to_mdf = @backup_folder + @to + '.mdf'; -- имя файла базы приемника
SET @to_log = @backup_folder + @to + '_log.ldf'; -- имя лог файла базы приемника
SET @alterSingle = N'ALTER DATABASE ' + QUOTENAME(@to) + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE;';
SET @alterMulti = N'ALTER DATABASE ' + QUOTENAME(@to) + ' SET MULTI_USER;';
-- Создаем базу данных если она не найдена
IF NOT EXISTS (SELECT name FROM master.sys.databases WHERE name = @to)
BEGIN
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'CREATE DATABASE ' + QUOTENAME(@to);
EXEC sp_executesql @sql;
END
-- Создание файла бэкапа
BACKUP DATABASE @from TO DISK = @backup_result;
-- Изменение на одиночный режим базы приемника для избежания ошибки соединения с базой
EXEC sp_executesql @alterSingle;
-- Восстановление базы приемника
SET @restoreCmd = 'RESTORE DATABASE ' + QUOTENAME(@to) + ' FROM DISK = ''' + @backup_result + ''' WITH MOVE ''' + @from + ''' TO ''' + @to_mdf + ''', MOVE ''' + @from_log + ''' TO ''' + @to_log + ''', REPLACE, RECOVERY';
EXEC sp_executesql @restoreCmd;
-- Изменение базы приемника на многопользовательский режим
EXEC sp_executesql @alterMulti;
-- Проверка существования файла перед удалением
IF EXISTS (SELECT * FROM sys.master_files WHERE physical_name = @backup_result)
BEGIN
-- Удаление файла бекапа с диска
EXEC master.dbo.xp_delete_file 0, @backup_result;
END
ELSE
BEGIN
PRINT 'Файл бэкапа не найден: ' + @backup_result;
END
-- Получение ID из msdb и удаление записи о файле бекапа из msdb
SELECT @BackupSetID = backup_set_id FROM msdb.dbo.backupset AS history WHERE database_name = @from AND recovery_model = 'SIMPLE';
IF ISNUMERIC(@BackupSetID) = 1
BEGIN
DECLARE @BackupSetIDInt INT = CAST(@BackupSetID AS INT);
EXEC msdb.dbo.sp_delete_backuphistory @BackupSetIDInt;
END
ELSE
BEGIN
PRINT 'Переменная @BackupSetID не содержит числовое значение.';
END
Этот SQL-запрос выполняет изменение режима восстановления базы данных и уменьшение размера журнала транзакций в Microsoft SQL Server. Вот что делает каждый шаг:
-
Изменение режима восстановления на SIMPLE:
ALTER DATABASE [ИмяБазы] SET RECOVERY SIMPLE GO- Переводит базу данных в режим восстановления SIMPLE. В этом режиме журнал транзакций не сохраняет все транзакции, что позволяет уменьшить его размер и упростить управление. Это полезно для баз данных, где не требуется точное восстановление до определенного момента времени.
-
Уменьшение размера файла журнала транзакций:
DBCC SHRINKFILE ([ИмяБазы_log], 1) GO- Уменьшает размер файла журнала транзакций до минимально возможного размера (в данном случае 1 МБ). Это освобождает неиспользуемое пространство в файле журнала.
-
Изменение режима восстановления обратно на FULL:
Возвращает базу данных в режим восстановления FULL. В этом режиме журнал транзакций сохраняет все транзакции, что позволяет выполнять точное восстановление до любого момента времени, если у вас есть полные и логические резервные копии.
Применение:
- Когда использовать: Этот процесс полезен, когда необходимо временно уменьшить размер журнала транзакций, например, перед выполнением больших операций, которые могут значительно увеличить журнал.
- Предостережения: После изменения режима восстановления на SIMPLE и обратно на FULL, необходимо выполнить полное резервное копирование базы данных, чтобы обеспечить возможность восстановления с использованием журнала транзакций.
ALTER DATABASE ['ИмяБазы']
SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE ([ИмяБазы_log], 1)
GO
ALTER DATABASE [ИмяБазы]
SET RECOVERY FULL
Этот SQL-скрипт выполняет операции по уменьшению размера всех баз данных, которые находятся в состоянии ONLINE, в Microsoft SQL Server. Вот что делает каждый шаг:
-
Объявление переменных:
DECLARE @DBName varchar(255); DECLARE @SQLCommand nvarchar(500);Переменные
@DBNameи@SQLCommandиспользуются для хранения имени текущей базы данных и команды SQL, которую нужно выполнить. -
Создание курсора для перебора всех баз данных
-
Курсор
DB_Cursorинициализируется для перебора всех баз данных, которые находятся в состоянии ONLINE. -
Открытие курсора и начало цикла:
OPEN DB_Cursor; FETCH NEXT FROM DB_Cursor INTO @DBName;Курсор открывается, и первая база данных извлекается в переменную
@DBName. -
Цикл обработки каждой базы данных:
WHILE @@FETCH_STATUS = 0 BEGIN SET @SQLCommand = 'ALTER DATABASE [' + @DBName + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DBCC SHRINKDATABASE([' + @DBName + ']); ALTER DATABASE [' + @DBName + '] SET MULTI_USER;'; EXEC (@SQLCommand); FETCH NEXT FROM DB_Cursor INTO @DBName; END;Для каждой базы данных выполняется:
- Перевод базы данных в одиночный режим (
SINGLE_USER) с немедленным откатом всех активных транзакций. Это необходимо для освобождения всех соединений и предотвращения конфликтов. - Уменьшение размера базы данных с помощью команды
DBCC SHRINKDATABASE, которая освобождает неиспользуемое пространство. - Возвращение базы данных в многопользовательский режим (
MULTI_USER), чтобы снова разрешить доступ нескольким пользователям.
- Перевод базы данных в одиночный режим (
-
Закрытие и освобождение курсора:
CLOSE DB_Cursor; DEALLOCATE DB_Cursor;Курсор закрывается и освобождается, что завершает процесс.
Применение:
- Когда использовать: Этот скрипт полезен для автоматического уменьшения размера всех баз данных на сервере, что может быть необходимо для управления дисковым пространством.
- Предостережения: Перевод базы данных в одиночный режим может прервать активные соединения и транзакции, поэтому этот скрипт следует использовать с осторожностью, особенно в производственных средах. Убедитесь, что у вас есть резервные копии перед выполнением таких операций.
DECLARE @DBName varchar(255);
DECLARE @SQLCommand nvarchar(500);
-- Создаем курсор для перебора всех баз данных
DECLARE DB_Cursor CURSOR FOR
SELECT name FROM master.sys.databases WHERE state = 0 -- Состояние ONLINE
OPEN DB_Cursor;
FETCH NEXT FROM DB_Cursor INTO @DBName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQLCommand = 'ALTER DATABASE [' + @DBName + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC SHRINKDATABASE([' + @DBName + ']);
ALTER DATABASE [' + @DBName + '] SET MULTI_USER;';
EXEC (@SQLCommand);
FETCH NEXT FROM DB_Cursor INTO @DBName;
END;
CLOSE DB_Cursor;
DEALLOCATE DB_Cursor;
Этот SQL-скрипт выполняет три основные операции с базой данных в Microsoft SQL Server:
Перевод базы данных в однопользовательский режим:
ALTER DATABASE dev_zup_pilot SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
Переводит базу данных dev_zup_pilot в однопользовательский режим. Это означает, что только одно соединение может быть активно в данный момент. Параметр WITH ROLLBACK IMMEDIATE немедленно завершает все текущие транзакции и соединения, чтобы освободить базу данных для дальнейших операций. Это необходимо для выполнения операций, которые требуют эксклюзивного доступа к базе данных, таких как переименование.
Переименование базы данных:
ALTER DATABASE dev_zup_pilot MODIFY NAME = zup_pilot;
Изменяет имя базы данных с dev_zup_pilot на zup_pilot. Это может быть полезно для приведения имен баз данных в соответствие с новыми стандартами именования или для отражения изменений в их назначении.
Переключение базы данных обратно в многопользовательский режим:
ALTER DATABASE zup_pilot SET MULTI_USER;
Возвращает базу данных zup_pilot в многопользовательский режим, позволяя множеству соединений одновременно подключаться к базе данных. Это необходимо для нормальной работы базы данных в среде, где доступ к ней требуется нескольким пользователям или приложениям.
Применение:
Когда использовать: Этот скрипт полезен, когда необходимо изменить имя базы данных, что требует эксклюзивного доступа к ней. Перевод в однопользовательский режим гарантирует, что никакие другие операции не будут мешать процессу переименования.
Предостережения: Перевод базы данных в однопользовательский режим может прервать активные соединения и транзакции, поэтому этот скрипт следует использовать с осторожностью, особенно в производственных средах. Убедитесь, что у вас есть резервные копии и что вы уведомили пользователей о предстоящих изменениях.
-- Перевод базы данных в однопользовательский режим.
ALTER DATABASE dev_zup_pilot SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- Переименование базы данных.
ALTER DATABASE dev_zup_pilot MODIFY NAME = zup_pilot;
-- Переключение базы данных обратно в многопользовательский режим.
ALTER DATABASE zup_pilot SET MULTI_USER;
Этот SQL-скрипт выполняет операции по управлению файлами данных и журналов транзакций для всех пользовательских баз данных, которые находятся в состоянии ONLINE, в Microsoft SQL Server. Он исключает системные базы данных (master, tempdb, model, msdb). Вот что делает каждый шаг:
-
Объявление переменных:
DECLARE @dbname NVARCHAR(128); DECLARE @logname NVARCHAR(128); DECLARE @datafile NVARCHAR(128); DECLARE @sql NVARCHAR(MAX);- Переменные используются для хранения имен баз данных, лог-файлов, файлов данных и SQL-запросов.
-
Объявление курсора:
Получение имен файлов: Извлекаются имена лог-файла и файла данных.
-
- Очистка журнала транзакций: Выполняется команда
BACKUP LOG ... WITH TRUNCATE_ONLY, которая очищает журнал транзакций. (Примечание: эта команда устарела и не рекомендуется для использования в новых версиях SQL Server.) - Сжатие лог-файла: Уменьшает размер лог-файла до минимально возможного.
- Сжатие файла данных: Уменьшает размер файла данных до минимально возможного.
- Установка максимального размера лог-файла: Ограничивает максимальный размер лог-файла до 100 МБ.
- Очистка журнала транзакций: Выполняется команда
-
-
Для каждой базы данных выполняются следующие действия:
-
-
Закрытие и освобождение курсора:
CLOSE db_cursor; DEALLOCATE db_cursor;Курсор закрывается и освобождается, завершая процесс.
Применение:
- Когда использовать: Этот скрипт может быть полезен для управления дисковым пространством, особенно если необходимо уменьшить размер файлов данных и журналов транзакций для всех пользовательских баз данных.
- Предостережения: Использование
WITH TRUNCATE_ONLYможет привести к потере возможности восстановления базы данных до определенного момента времени, так как журнал транзакций будет очищен. Этот скрипт следует использовать с осторожностью и только в тех случаях, когда это действительно необходимо. Убедитесь, что у вас есть актуальные полные резервные копии перед выполнением таких операций.
DECLARE @dbname NVARCHAR(128); -- Объявление переменной для имени базы данных
DECLARE @logname NVARCHAR(128); -- Объявление переменной для имени лог-файла
DECLARE @datafile NVARCHAR(128); -- Объявление переменной для имени файла данных
DECLARE @sql NVARCHAR(MAX); -- Объявление переменной для SQL-запроса
-- Объявление курсора для перебора всех онлайн баз данных, кроме системных
DECLARE db_cursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE state_desc = 'ONLINE'
AND name NOT IN ('master', 'tempdb', 'model', 'msdb');
OPEN db_cursor; -- Открытие курсора
FETCH NEXT FROM db_cursor INTO @dbname; -- Получение следующей базы данных в курсор
WHILE @@FETCH_STATUS = 0 -- Пока есть базы данных для обработки
BEGIN
-- Получение имени лог-файла
SET @logname = (SELECT name FROM sys.master_files WHERE type_desc = 'LOG' AND database_id = DB_ID(@dbname));
-- Получение имени файла данных
SET @datafile = (SELECT name FROM sys.master_files WHERE type_desc = 'ROWS' AND database_id = DB_ID(@dbname));
-- Транзакция лог-файла
SET @sql = 'BACKUP LOG [' + @dbname + '] WITH TRUNCATE_ONLY;';
EXEC sp_executesql @sql;
-- Сжатие лог-файла
SET @sql = 'USE [' + @dbname + ']; DBCC SHRINKFILE (' + @logname + ', 1);';
EXEC sp_executesql @sql;
-- Сжатие файла данных
SET @sql = 'USE [' + @dbname + ']; DBCC SHRINKFILE (' + @datafile + ', 1);';
EXEC sp_executesql @sql;
-- Установка максимального размера для лог-файла
SET @sql = 'ALTER DATABASE [' + @dbname + '] MODIFY FILE (NAME = ' + @logname + ', MAXSIZE = 100MB);';
EXEC sp_executesql @sql;
FETCH NEXT FROM db_cursor INTO @dbname; -- Получение следующей базы данных в курсор
END
CLOSE db_cursor; -- Закрытие курсора
DEALLOCATE db_cursor; -- Освобождение ресурсов, занятых курсором
Этот SQL-скрипт выполняет две основные операции для всех пользовательских баз данных в Microsoft SQL Server, исключая системные базы данных (master, model, msdb, tempdb). Вот что делает каждый шаг:
-
Перевод всех баз данных в режим восстановления SIMPLE:
DECLARE @sql NVARCHAR(MAX) = N''; -- Генерация команд ALTER DATABASE для каждой базы данных, кроме системных баз данных SELECT @sql += 'ALTER DATABASE [' + name + '] SET RECOVERY SIMPLE; ' + CHAR(13) FROM sys.databases WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb'); -- Выполнение сгенерированных команд EXEC sp_executesql @sql;- Генерация команд: Создает команды
ALTER DATABASEдля перевода каждой пользовательской базы данных в режим восстановления SIMPLE. В этом режиме журнал транзакций не сохраняет все транзакции, что упрощает управление и уменьшает его размер. - Выполнение команд: Выполняет сгенерированные команды для изменения режима восстановления всех пользовательских баз данных.
- Генерация команд: Создает команды
-
Сжатие всех баз данных:
-- Очистка переменной @sql для повторного использования SET @sql = N''; -- Генерация команд DBCC SHRINKDATABASE для каждой базы данных, кроме системных баз данных SELECT @sql += 'DBCC SHRINKDATABASE ([' + name + '], 10); ' + CHAR(13) FROM sys.databases WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb'); -- Выполнение сгенерированных команд EXEC sp_executesql @sql;- Генерация команд: Создает команды
DBCC SHRINKDATABASEдля уменьшения размера каждой пользовательской базы данных. Параметр10указывает на целевой процент свободного пространства, который должен остаться после сжатия. - Выполнение команд: Выполняет сгенерированные команды для сжатия всех пользовательских баз данных.
- Генерация команд: Создает команды
Применение:
- Когда использовать: Этот скрипт полезен для управления дисковым пространством и упрощения управления журналами транзакций, особенно если необходимо уменьшить размер всех пользовательских баз данных и их журналов транзакций.
- Предостережения: Перевод баз данных в режим восстановления SIMPLE может повлиять на возможность восстановления до определенного момента времени, так как журнал транзакций будет очищен. Убедитесь, что у вас есть актуальные полные резервные копии перед выполнением таких операций. Также, сжатие баз данных может временно увеличить нагрузку на сервер, поэтому его следует выполнять в периоды низкой активности.
DECLARE @sql NVARCHAR(MAX) = N'';
-- Генерация команд ALTER DATABASE для каждой базы данных, кроме системных баз данных
SELECT @sql += 'ALTER DATABASE [' + name + '] SET RECOVERY SIMPLE; ' + CHAR(13)
FROM sys.databases
WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb');
-- Выполнение сгенерированных команд
EXEC sp_executesql @sql;
-- Очистка переменной @sql для повторного использования
SET @sql = N'';
-- Генерация команд DBCC SHRINKDATABASE для каждой базы данных, кроме системных баз данных
SELECT @sql += 'DBCC SHRINKDATABASE ([' + name + '], 10); ' + CHAR(13)
FROM sys.databases
WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb');
-- Выполнение сгенерированных команд
EXEC sp_executesql @sql;
Postgres
см пункт 1
@echo off
setlocal
rem Установите переменные
set PGUSER=your_username
set PGPASSWORD=your_password
set PGHOST=localhost
set PGPORT=5432
set FROM_DB=ИмяБазыОткуда
set TO_DB=ИмяБазыКуда
set BACKUP_FILE=C:\path\to\backup\ИмяБазыОткуда.bak
rem Создание резервной копии
echo Creating backup of %FROM_DB%...
pg_dump -U %PGUSER% -h %PGHOST% -p %PGPORT% -F c -b -v -f %BACKUP_FILE% %FROM_DB%
rem Проверка успешности создания резервной копии
if %ERRORLEVEL% neq 0 (
echo Backup failed!
exit /b %ERRORLEVEL%
)
rem Восстановление базы данных
echo Restoring database to %TO_DB%...
pg_restore -U %PGUSER% -h %PGHOST% -p %PGPORT% -d %TO_DB% -v %BACKUP_FILE%
rem Проверка успешности восстановления
if %ERRORLEVEL% neq 0 (
echo Restore failed!
exit /b %ERRORLEVEL%
)
rem Удаление файла резервной копии
echo Deleting backup file...
del %BACKUP_FILE%
rem Проверка успешности удаления
if %ERRORLEVEL% neq 0 (
echo Failed to delete backup file!
exit /b %ERRORLEVEL%
)
echo Operation completed successfully!
endlocal
#!/bin/bash
# Установите переменные
PGUSER="your_username"
PGPASSWORD="your_password"
PGHOST="localhost"
PGPORT="5432"
FROM_DB="ИмяБазыОткуда"
TO_DB="ИмяБазыКуда"
BACKUP_FILE="/path/to/backup/ИмяБазыОткуда.bak"
# Экспорт переменных окружения для аутентификации
export PGPASSWORD
# Создание резервной копии
echo "Creating backup of $FROM_DB..."
pg_dump -U "$PGUSER" -h "$PGHOST" -p "$PGPORT" -F c -b -v -f "$BACKUP_FILE" "$FROM_DB"
# Проверка успешности создания резервной копии
if [ $? -ne 0 ]; then
echo "Backup failed!"
exit 1
fi
# Восстановление базы данных
echo "Restoring database to $TO_DB..."
pg_restore -U "$PGUSER" -h "$PGHOST" -p "$PGPORT" -d "$TO_DB" -v "$BACKUP_FILE"
# Проверка успешности восстановления
if [ $? -ne 0 ]; then
echo "Restore failed!"
exit 1
fi
# Удаление файла резервной копии
echo "Deleting backup file..."
rm "$BACKUP_FILE"
# Проверка успешности удаления
if [ $? -ne 0 ]; then
echo "Failed to delete backup file!"
exit 1
fi
echo "Operation completed successfully!"
CMD
msg * /server:localhost "Ваше сообщение"
@echo off
chcp 65001 >nul
REM =====================================================
REM БЭКАП 1С ONEDRIVE (ЧЕРЕЗ 7-ZIP БЕЗ ОСТАНОВКИ)
REM =====================================================
REM Укажите путь к 7-Zip
set "ZIP=C:\Program Files\7-Zip\7z.exe"
set "BASE=C:\base 1c\mkf_unf_file"
set "LOG=C:\Backup\backup.log"
set "BACKUP_DIR=%USERPROFILE%\OneDrive\1C_Backup"
REM Сколько последних копий оставлять (остальные старые удалятся)
set "KEEP=3"
REM Получение даты
for /f "tokens=1-3 delims=." %%a in ("%DATE%") do set "DATENOW=%%c%%b%%a"
set "DST=%BACKUP_DIR%\backup_%DATENOW%.7z"
mkdir C:\Backup 2>nul
mkdir "%BACKUP_DIR%" 2>nul
cls
echo =====================================================
echo Архивация 1С: %date% %time%
echo В OneDrive: %DST%
echo =====================================================
REM АРХИВАЦИЯ ЧЕРЕЗ 7-ZIP
echo Создание архива...
REM -xr!"1Cv8Temp" - ИСКЛЮЧИТЬ временную папку (убирает ошибки .tmp)
REM -ssw - пытаться читать заблокированные файлы
"%ZIP%" a -t7z -mx=3 -ssw -xr!"1Cv8Temp" "%DST%" "%BASE%\*" > "%LOG%" 2>&1
REM 7-Zip возвращает 0 (успех) или 1 (предупреждения, но архив создан)
if %errorlevel% leq 1 (
echo.
echo =====================================================
echo АРХИВ СОЗДАН!
echo Файл: %DST%
echo Лог: %LOG%
echo =====================================================
echo [%date% %time%] УСПЕХ >> "%LOG%"
REM ---------------------------------------------------------
REM УДАЛЕНИЕ СТАРЫХ КОПИЙ (оставляем последние %KEEP% штук)
REM ---------------------------------------------------------
echo.
echo Очистка старых резервных копий (оставляем %KEEP% последних)...
for /f "skip=%KEEP% eol=: delims=" %%F in ('dir /b /o-d /t:w "%BACKUP_DIR%\backup_*.7z" 2^>nul') do (
echo Удаляется старая копия: %%F
del /f /q "%BACKUP_DIR%\%%F"
echo [%date% %time%] Удалена старая копия: %%F >> "%LOG%"
)
timeout /t 5 >nul
exit /b 0
)
REM Если код ошибки 2 и больше - реальная ошибка
echo ОШИБКА: Архивация не удалась! Код: %errorlevel%
echo [%date% %time%] ОШИБКА 7-ZIP (Код: %errorlevel%) >> "%LOG%"
pause
exit /b 1
@echo off
cd /d "%~dp0"
set "outfile=structure.txt"
:: Включаем режим Юникода для защиты кириллицы от знаков вопроса
if "%~1" NEQ "unicode" (
cmd.exe /U /C ""%~f0" unicode"
exit /B
)
echo Structure of directories and files: > "%outfile%"
echo ======================================= >> "%outfile%"
:: Запускаем рекурсивную функцию построения дерева из корня
call :GetTree "." ""
start notepad.exe "%outfile%"
exit /B
:GetTree
setlocal enabledelayedexpansion
set "current_dir=%~1"
set "indent=%~2"
:: Шаг 1: Сначала выводим и обрабатываем все ПАПКИ в текущем каталоге
for /d %%d in ("%current_dir%\*") do (
set "dirname=%%~nxd"
echo !indent![+] !dirname! >> "%outfile%"
:: Рекурсивный вызов для захода внутрь папки с увеличением отступа
call :GetTree "%%d" "!indent!. "
)
:: Шаг 2: Затем выводим все ФАЙЛЫ в этом же каталоге
for %%f in ("%current_dir%\*") do (
set "filename=%%~nxf"
:: Фильтр: не добавляем в отчет сам скрипт и файл результата
if "!filename!" NEQ "%outfile%" if "!filename!" NEQ "%~nx0" (
echo !indent! - !filename! >> "%outfile%"
)
)
endlocal
exit /B
Power Shell
# Получаем список всех профилей пользователей
$profiles = Get-WmiObject Win32_UserProfile | Where-Object { $_.Special -eq $false }
foreach ($profile in $profiles) {
$localAppDataPath = Join-Path $profile.LocalPath "AppData\Local\1C"
if (Test-Path $localAppDataPath) {
Write-Host "Удаление содержимого папки: $localAppDataPath"
Remove-Item "$localAppDataPath\*" -Recurse -Force
} else {
Write-Host "Папка не найдена: $localAppDataPath"
}
}
WMI
C:\Windows\system32>Winmgmt /salvagerepository
C:\Windows\system32>net stop Winmgmt
C:\Windows\system32>net start Winmgmt
C:\Windows\system32>Winmgmt /resetrepository
C:\Windows\system32>sc config winmgmt start= auto
C:\Windows\system32>net start winmgmt
C:\Windows\system32>wmiprvse /regserver
Database Compression Tool
Инструмент для свертки и сжатия баз данных 1С
Доступна демо-версия с прогнозом результата
Вступайте в нашу телеграмм-группу Инфостарт
скрипты SQL Server бэкап и восстановление MSSQL уменьшение log файла SQL DBCC SHRINKFILE очистка кэша 1С PowerShell скрипт бэкапа 1С архивация 1С в OneDrive 7zip командная строка восстановление репозитория WMI ремонт WMI переименование базы данных SQL сжатие базы данных MSSQL режим восстановления SIMPLE обслуживание SQL Server удаление старых бэкапов CMD дерево каталогов BAT скрипты администрирования Windows бэкап Postgres отправка сообщения пользователю CMD очистка AppData 1C
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
HighLoad оптимизация Администрирование СУБД Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бухгалтерский учет Бесплатно (free)
После миграции с MS SQL на PostgreSQL закрытие месяца в 1С:ERP стало идти 8 часов вместо 12 минут. Рассказываем, как мы нашли причину в оценке Hash Join, которую планировщик завышал в миллионы раз, и как исправили её так, что проблемный запрос теперь выполняется за 18 секунд вместо часа.
19.10.2026 936 Tantor 0
Администрирование СУБД Сервера Системный администратор Разработчик 1С:Предприятие 8 Россия Бесплатно (free)
Примеры скриптов для работы с автономным сервером (ibsrv).
09.10.2026 1043 hexhoc 6
Администрирование СУБД HighLoad оптимизация Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 Россия Бесплатно (free)
Большинство материалов о компрессии в PostgreSQL отвечают на вопрос «во сколько раз удалось уменьшить базу». Мы предлагаем посмотреть на проблему с другой стороны — какой ценой достигается эта экономия? В статье разбираем архитектурные компромиссы различных подходов к компрессии страниц, объясняем, почему при разработке CSM в Tantor Postgres отказались от погони за максимальным коэффициентом сжатия, и показываем результаты нагрузочных испытаний на реальных базах 1С.
01.10.2026 1434 Tantor 6
DevOps и автоматизация разработки Администрирование СУБД Групповая разработка (Git, хранилище) Разработчик 1С 8.3 Абонемент ($m)
В корпоративных инсталляциях «1С:Предприятие 8.3» под управлением PostgreSQL всё чаще проявляются архитектурные пределы масштабирования: рост числа пользователей, обязательная маркировка, плотный поток API-интеграций и высокая стоимость простоя. Вводная часть цикла разбирает ключевые факторы современной эксплуатационной нагрузки и формирует инженерную методологию эволюционной модернизации без остановки продуктивного контура. Материал основан на практическом кейсе «Торговый контур» и показывает, как определить целевые метрики (p95, MTTR, APDEX), выстроить наблюдаемость, стабилизировать работу кластера и подготовить инфраструктуру к дальнейшему масштабированию. Публикация задаёт фундамент для последующих частей, посвящённых телеметрии, оптимизации PostgreSQL, CI/CD и архитектурному росту.
1 стартмани
10.09.2026 1511 Ninel_S 0
HighLoad оптимизация Администрирование СУБД Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бесплатно (free)
В рамках 18 релиза СУБД Tantor Postgres мы рассказывали об оптимизациях, которые помогают планировщику сделать более точный выбор между Nested Loop и Hash Join. В следующем релизе у нас планируются оптимизации, которые позволят ускорить выполнение как Nested Loop, так и Hash Join. Сегодня мы расскажем об одном из таких методов - фильтре Блума.
31.08.2026 6110 Tantor 3
Администрирование СУБД Системный администратор Разработчик 1С 8.3 Бесплатно (free)
Мы подготовили для сообщества Infostart.ru практическое занятие, в котором каждый желающий сможет: научиться собирать реальные данные о процессах кластера 1С; выявлять «перестарков» — процессы старше периода и без соединений; выполнять безопасный перезапуск (с dry-run и подтверждением); настраивать автоматическую проверку через systemd на Linux; отправлять уведомления (Telegram, почта) при обнаружении проблем; работать с логами, ротацией, профилями кластеров и конфигурацией; развернуть полноценный учебный проект AdminClusterMonitor у себя в тестовой среде.
30.08.2026 1719 Ninel_S 2
Администрирование СУБД Системный администратор 1С:Предприятие 8 Бесплатно (free)
На infostart.ru вышел разбор Ивана Недомолкова «Сервер 1С падает: настройка сбора дампов (logcfg.xml), лимиты памяти и передача дампа в поддержку» - это хорошая инструкция, как ловить и разбирать падение rphost постфактум: logcfg.xml, procdump, анализ дампа. Но там нет ответа на вопрос «а почему кластер вообще прибил процесс сам, ещё до всякого краша». Мы дополняем разбор тремя сводными таблицами лимитов памяти и автомасштабирования кластера - и заодно фиксируем, чем в этой части лицензия ПРОФ урезана относительно КОРП.
12.08.2026 2355 Ninel_S 5
Администрирование СУБД Системный администратор Разработчик Бесплатно (free)
5,5 тысячи пользователей в единой базе 1С, розница в режиме 24/7 и SLA 99,98% – в таких условиях любая авария быстро превращается в очереди на кассах, потерю денег и давление со стороны бизнеса. Показываем, как выстроить процесс аварийно-восстановительных работ: от первых алертов и базового скрининга системы до подключения команды, проверки гипотез и дебрифа после инцидента. Разбираем, как метрики, дашборды, техжурнал, Zabbix, Prometheus, Grafana, Telegram-боты и скрипты помогают не гадать, а быстро находить причину проблемы. На реальных авариях объясняем, почему «быстро» не должно означать «рискованно», как работа над ошибками снижает панику и почему каждая авария может сделать систему надежнее.
11.08.2026 3395 jul.dolganova 9
"2. Уменьшение данных журнала SHRINK
ALT ER DATABASE ['ИмяБазы']
SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE ([ИмяБазы_log], 1)
GO
ALT ER DATABASE [ИмяБазы]
SET RECOVERY FULL"
Например: Зачем вам SET RECOVERY FULL если, как я понял из дальнейших комментариев к статье, вы не использует бэкапы журналов и дифференциальный бэкап, тогда используйте модель SIMPLE и ничего обрезать не надо будет, в противном случае, такая обрезка журнала разрушит цепочку бэкапов и для ее восстановления нужно делать полный бэкап следом за шринком, для восстановления этой самой цепочки.
1. Вам правильно указали на цепочку бэкапа. Посмотрите пожалуйста , как реализован там бэкап копий (обратить внимание на WITH COPY_ONLY;). Если настроена полноценная политика создания бэкапов - будут проблемы при откате (решается, но добавляет хлопот). Когда-то давно получил по рукам от dba за бекап без этой опции.
2. Здесь не понял немного, к какой базе применяется, если к рабочей - не лучший вариант ( - можно почитать эту статью, если интересно разобраться). Если дев-базу, возможно стоит добавить скрипт сжатия данных, если вывозит железо (например 3 пунктом).
Ну и в догонку:
* - хороший набор скриптов обслуживания базы
* - "обязательный" набор :-) Ничего лучше для бэкапа не встречал (в виде скриптов, понятно, что есть специализированные инструменты)
Делитесь ниже, что еще используете. Я остановил свой выбор на двух наборах ola.hallengren, First-Responder-Kit со своими доработками, но уверен, что есть еще инструменты, которые стоит внедрить в своей работе. Всем хорошей недели!
Рейтинг: 1430
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 2137888
Создание 04.07.24 17:00
Обновление 19.05.26 07:00
Просмотры 7922
Загрузки 0
Рейтинг
16
Комментарии 22
Код открыт Да
Рубрики Администрирование СУБД
Тип файла Нет файла
Платформа Не имеет значения
Конфигурация Универсальные
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)