Odin | База знаний 1С

Как написать скрипт...
 

Как написать скрипт для сжатия баз данных через MSSQL, исключая системные?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

привет. Напиши скрипт для регламентного сжатия всех баз (кроме системных) на сервере через MSSQL.



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 
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% свободного места. Вы можете изменить процент, если это необходимо.



   
ОтветитьЦитата