Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


microsoft-sql-server:t-sql-script-samples:how-to-shrink-dynamic-variables-ms-sql-server-database

Как выполнить shrink (сжать, обрезать) транзакционного лога базы данных SQL Server с динамической переменной

Меняем один раз <database name> названием вашей базы и запускаем скрипт.

DECLARE @DBName nvarchar(250)
SET @DBName = '<database name>'
 
DECLARE @SQLText nvarchar(MAX)
 
SET @SQLText = 
'
 
USE {DBNAME}
ALTER DATABASE {DBNAME} SET RECOVERY SIMPLE
DBCC SHRINKFILE ({DBNAME}_log, 50);
ALTER DATABASE {DBNAME} SET RECOVERY FULL
'
SET  @SQLText = REPLACE (@SQLText ,  '{DBNAME}' ,  @DBName) 
EXECUTE  (@SQLText)

Автор первичной редакции:
Евгений Лейтан
Время публикации: 06.03.2016 16:56

Обсуждение

Алексей Максимов, 06.03.2016 17:42, 06.03.2016 17:46
А разве для SHRINK нужно переводить базу данных в режим восстановления SIMPLE? И потом, если моя база данных работает в режиме восстановления SIMPLE (так нужно), то после такого вот "шринка" режим восстановления станет FULL, что ни есть хорошо.
d3f4u7t, 28.08.2024 17:48
Почему просто не делать бэкап лога в trn регулярно? Это же освобождает место для записи транзакций внутри самого файла, не давая ему расти. А потом просто shrink файл лога до разумного размера чтобы уменьшить фрагментацию файлов. то есть



backup log MAIN_BD to Disk = "MAIN_BD_LOG_BAK.trn";

dbcc shrinkfile (MAIN_BD_log, 50);



это как у меня в голове сложилось. Единственное это если делать восстановление с транзакциями то нужно будет применять всем попутные файлы бэкапа транзакций чтобы цепочку не нарушать
Ваш комментарий:
 
microsoft-sql-server/t-sql-script-samples/how-to-shrink-dynamic-variables-ms-sql-server-database.txt · Последнее изменение: Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki