Уменьшение базы Crystal SET Retail



Работает SET Retail на MSSQL. Кое-какие логи хранит в базе, именно их мы и будем удалять, для профилактики так сказать.


Создадим файл сценария с следующим текстом:

start_clean.cmd

"c:\Program Files\Microsoft SQL Server\80\Tools\Binn\osql.exe" -U sa -P mssql -d ses -i Kill_jobs.sql -o result.log

Расположение файла osql.exe соответствует версии MSSQL, укажите правильный путь.

Данная строка выполняет скрипт Kill_jobs.sql от пользователя SA с паролем mssql

Вот текст SQL запроса:
DELETE FROM [SES].[dbo].[JobsDataLog]
DELETE FROM [SES].[dbo].[JobsQueueLog]
DELETE FROM [SES].[dbo].[ErrorLog]
DELETE FROM [SES].[dbo].[ImportDataArchive]
DELETE FROM [SES].[dbo].[Transfercmd] 
DELETE FROM [SES].[dbo].[JobsData] WHERE JobId IN (SELECT Id FROM [SES].[dbo].[JobsQueue] WHERE Alive='0')
DELETE FROM [SES].[dbo].[JobsQueue] WHERE Alive='0'

Данный запрос удаляет все данные из таблиц с логами и отчищает очередь заданий. Физический размер файла БД не изменится, пока вы не выполните операцию SHRINK

Имеет смысл выполнять этот сценарий раз в сутки, это помешает БД разрастись.

ВАЖНО! не останавливайте выполнение сценария и не перезапускайте компьютер! Прерывание выполнения запроса приведет к сбою в работе БД!