Обрезаем журнал базы в MSSQL
В Microsoft SQL server 2005 есть три типа модели восстановления (recovery model) – это простая, полная и Bulk-Logged. Я не буду останавливаться здесь на различиях этих моделей, скажу только, что в повседневной жизни в базе данных среднего предприятия очень правильно и удобно использовать полную модель и хранить журнал и базу данных на разных физических носителях, в этом случае можно получить не только выигрыш в производительности, но и увеличение отказоустойчивости при достаточно небольших затратах. Правда при полной модели восстановления рост журнала неизбежен, поэтому с определенной периодичностью, удобной для вашей организации можно обрезать лог, мой небольшой скриптик может вам помочь:
DECLARE @DbName nvarchar(10);
DECLARE @CurrentDate Datetime;
SET @DbName = 'DataBaseName';
SET @CurrentDate = GetDate();
EXEC ('BACKUP DATABASE '+@DbName+' TO DISK = ''E:\Temp\'+@DbName+'DataBase.bak'' WITH NAME = ''Full database backup '+@DbName+' '+@CurrentDate+''';');
EXEC ('BACKUP LOG '+@DbName+' TO DISK = ''E:\Temp\'+@DbName+'Log.bak'' WITH NAME = ''Full log backup '+@DbName+' '+@CurrentDate+' '';');
EXEC ('ALTER DATABASE ' + @DbName + ' SET RECOVERY SIMPLE;');
EXEC ('USE '+@DbName+'; DBCC SHRINKFILE ('+@DbName+'_log, 10);')
EXEC ('ALTER DATABASE ' + @DbName + ' SET RECOVERY FULL');
