Нередко случалось так, что в MSSQL Express БД превышала установленнное для нее ограничение (для MSSQL Express 2005, например, в 4 Гб). При этом не было смысла делать шринк базы так как в файле БД не было свободного места, а журнал транзакций был пуст (модель восстановления Simple). Но можно было почистить какую-либо таблицу. Но так как база превышала ограничение на размер, чистка также не увенчалась успехом так как при удалении строк из таблицы (delete from table) SQL server не мог записать в файл транзакций транзакции из-за превышения размера базы. Путем поисков в интернете был найден следующий небольшой скрипт, который после его выполнения частично отключает запись в лог транзакций:
sp_dboption MyDB, 'trunc. log on chkpt', TRUE
Теперь можно на таблице выполнить удаление строк:
delete from table
И запустить следующий скрипт, который включает запись в лог транзакций:
sp_dboption MyDB, 'trunc. log on chkpt', FALSE
Данный метод не работает на MS SQL 2012
sp_dboption MyDB, 'trunc. log on chkpt', TRUE
Теперь можно на таблице выполнить удаление строк:
delete from table
И запустить следующий скрипт, который включает запись в лог транзакций:
sp_dboption MyDB, 'trunc. log on chkpt', FALSE
Данный метод не работает на MS SQL 2012