УДАЛЕНИЕ ФАЙЛА LDF
Есть ли способ, с помощью которого я могу периодически удалять сгенерированный файл LDF, так как он занимает до 100 ГБ моего пространства, и я хочу освободить это пространство. Есть ли способ написать процедуру, которая периодически удаляет этот файл LDF?
2 ответа
Вы определенно не можете удалить файл LDF, только уменьшить его до первоначального размера. Шаг, чтобы уменьшить это
- остановить репликацию (если есть)
- установить базу данных в режим простого восстановления (если установлен другой)
- выполнить резервное копирование
выполнить сжатие
Sql для шага 1 вы можете найти здесь (никогда не использовал его) https://cavemansblog.wordpress.com/2012/03/12/startstop-sql-server-replication-agent/
SQL для этапа 2 https://msdn.microsoft.com/en-us/library/ms189272.aspx
USE master ;
ALTER DATABASE youdatabase SET RECOVERY SIMPLE ;
...
ALTER DATABASE youdatabase SET RECOVERY FULL ;
Sql для шага 3 https://msdn.microsoft.com/en-us/library/ms186865.aspx
BACKUP DATABASE your_database TO DISK = 'place_your_path_here';
Sql для шага 4 https://msdn.microsoft.com/en-us/library/ms189493.aspx, кстати, B - полный скрипт для ваших нужд:-)
DBCC SHRINKFILE (yourdabase_Log, 1);
Вам нужно прочитать о том, как делать резервные копии SQL Server и как работают модели восстановления: https://msdn.microsoft.com/en-us/library/ms187048.aspx
Но вкратце:
Если для вашей базы данных установлен режим полного восстановления, то вам необходимо выполнить резервное копирование журнала транзакций: используемое пространство в журнале транзакций станет доступным для новых транзакций.
Если вы находитесь в простом режиме восстановления, то журнал транзакций должен быть рассчитан для вашего пикового переходного режима (или он, естественно, достигнет этого уровня).
Удаление журнала транзакций - плохая идея, особенно если вы не знаете, как он используется.