База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как написать скрипт для сжатия баз данных через MSSQL, исключая системные? › RE: Как написать скрипт для сжатия баз данных через MSSQL, исключая системные?
13 апреля 2025 в 7:00
#32317

Участник
1С (Код)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | sql DECLARE @dbName NVARCHAR(256) DECLARE @sql NVARCHAR(MAX) DECLARE db_cursor CURSOR FOR SELECT name FROM sys.databases WHERE database_id > 4 -- Исключаем системные базы (master, tempdb, model, msdb) OPEN db_cursor FETCH NEXT FROM db_cursor INTO @dbName WHILE @@FETCH_STATUS = 0 BEGIN SET @sql = 'USE [' + @dbName + ']; ' + 'DBCC SHRINKDATABASE ([' + @dbName + '], 10);' -- Сжимаем базу до 10% свободного места EXEC sp_executesql @sql FETCH NEXT FROM db_cursor INTO @dbName END CLOSE db_cursor DEALLOCATE db_cursor |
Этот скрипт проходит по всем базам данных на сервере, исключая системные, и выполняет команду DBCC SHRINKDATABASE
, которая сжимает базу данных, оставляя 10% свободного места. Вы можете изменить процент, если это необходимо.