Как усечь журнал транзакций в базе данных SQL Server 2008?

9

Как усечь журнал транзакций в базе данных SQL Server 2008?

Каковы возможные лучшие способы?

Я попробовал это из блога следующим образом:

1) От настройки базы данных до простого восстановления, сжатия файла и повторной настройки полного восстановления вы фактически теряете ценные данные журнала и не сможете восстановить момент времени. Мало того, вы также не сможете использовать последующие файлы журнала.

2) Сжатие файла базы данных или базы данных добавляет фрагментацию.

Есть много вещей, которые вы можете сделать. Во-первых, начните делать правильное резервное копирование журнала, используя следующую команду вместо того, чтобы обрезать их и часто их терять.

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

Удалите код сжимания файла. Если вы делаете правильные резервные копии журналов, ваш файл журнала (как правило, исключая особые случаи) не становится очень большим.

Нео
источник
2
Хорошо, а что случилось, когда ты попробовал это?

Ответы:

4

Самый безопасный и правильный способ обрезать файл журнала, если база данных находится в режиме полного восстановления, - это выполнить резервное копирование журнала транзакций (без TRUNCATE_ONLY. В будущих выпусках это устарело и не рекомендуется).

Звучит так, как будто вы хотите сжать файл журнала после этого, и в этом случае вы запустите DBCC SHRINKFILE(yourTLogName)команду. Существует необязательный второй параметр для запрашиваемого размера, чтобы уменьшить его.

Томас Стрингер
источник
8

Вы можете сделать резервную копию журнала на нулевом устройстве:

backup log [databasename] to disk = 'nul';

Или вы можете переключить модель восстановления на простую, а затем снова вернуться к полной / полной загрузке.

Макс Вернон
источник
Я получил + один за это, потому что это инструмент в наборе инструментов dbas, и я думаю, что ваш ответ не заслуживает отрицательных голосов. Я согласен с мнением о том, что лучший способ - создавать резервные копии журнала транзакций, но все хорошие инструменты могут быть использованы правильно или неправильно.
Мартин Шеберг
6

Если вы не заботитесь о своих данных журнала и просто хотите от них избавиться:

Измените модель восстановления с полной на простую, а затем вернитесь к полной. Сократите файл, используя DBCC SHRINKFILE с аргументом TRUNCATEONLY

Следующая команда изменит модель восстановления с полной на простую

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

Следующая команда изменит модель восстановления на полную

ALTER DATABASE <databse_name> SET RECOVERY FULL

Чтобы найти имя файла журнала, вы можете использовать следующий запрос

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

Сожмите файл

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

См. Что такое команда для усечения файла журнала SQL Server? для получения дополнительной информации об этом

Alex
источник