Як урізати журнал транзакцій у базі даних SQL Server 2008?


9

Як урізати журнал транзакцій у базі даних SQL Server 2008?

Які можливі найкращі способи?

Я спробував це з блогу наступним чином:

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

2) Зменшення файлу бази даних або бази даних додає фрагментацію.

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

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

Видаліть код SHRINKING файла. Якщо ви робите резервні копії журналу, ваш файл журналу (як правило, звичайно, виключаються спеціальні випадки), не дуже зростає.


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? для отримання додаткової інформації про це

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.