1. Бэкап базы.
2.1. Убедится что бэкап создан.
2.2. Убедится что настроен ежедневный бэкап базы.
2.3. Посмотреть а создавались ли ежедневные бэкапы.
3. Переводишь базу в recovery model: simple
4. shrink log file
5. обратно в recovery model: full
DECLARE @SQLStr VARCHAR(8000) -- database name
DECLARE @name VARCHAR(50) -- database name
DECLARE @logname VARCHAR(50) -- database log name
DECLARE db_cursor CURSOR FOR
SELECT sysdb.name name,files.name logname
FROM master.dbo.sysdatabases sysdb (nolock)
--join sys.databases db (nolock) ON sysdb.name = db.name and db.recovery_model_desc = 'FULL'
join sys.databases db (nolock) ON sysdb.name = db.name
join master.sys.sysaltfiles files (nolock) ON files.dbid = sysdb.dbid and files.groupid = 0
WHERE db.name <> 'tempdb'
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name,@logname
WHILE @@FETCH_STATUS = 0
BEGIN
Set @SQLStr = '
USE ['+@name +']
ALTER DATABASE ['+@name+'] SET RECOVERY SIMPLE
DBCC SHRINKFILE ('''+@logname+''', 50);
ALTER DATABASE ['+@name+'] SET RECOVERY FULL'
EXECUTE(@SQLStr)
--select @SQLStr
FETCH NEXT FROM db_cursor INTO @name,@logname
END
CLOSE db_cursor
DEALLOCATE db_cursor
(4) Не уменьшит, но позволит уменьшить.
Алгоритм: бэкап в нулл, шринк. Повторить два раза подряд.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший