МС SQL. Как я могу найти момент времени, когда файл журнала был сжат?

Кто-то сжимает файлы журналов баз данных в производстве. Сейчас и потом. Нехорошо часто сжиматься.

Но как мне найти информацию о том, когда и какой пользователь sql уменьшил файл журнала?

Все на сервере MS SQL регистрируется, поэтому где-то находится информация, которую я ищу. Какой-то системный вид или таблица?


person Lava    schedule 06.09.2018    source источник
comment
sys.fn_trace_gettable проверьте это один раз   -  person Chanukya    schedule 06.09.2018
comment
dba. stackexchange.com/questions/129526/   -  person Mitch Wheat    schedule 06.09.2018
comment
благодарю вас. При поиске такого случая не нашел. хороший   -  person Lava    schedule 11.09.2018


Ответы (3)


Если вы щелкните правой кнопкой мыши свою базу данных, перейдите к отчетам и выберите «Использование диска» (по памяти, я не сидел за ПК, чтобы проверить), он покажет события.

Однако информация взята из трассировки по умолчанию, поэтому будут отображаться только последние события. Я считаю, что трассировка по умолчанию составляет всего 5 файлов по 20 МБ.

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

person SEarle1986    schedule 06.09.2018

Перейдите в раздел Сервер > Управление > Расширенные события. Затем создайте новый сеанс и используйте библиотеку событий: введите здесь описание изображения

Затем вы можете просмотреть данные в реальном времени:

введите здесь описание изображения

Или проанализируйте прошлые данные:

введите здесь описание изображения

Надеюсь это поможет. Если вы заинтересованы в чтении файла расширенных журналов напрямую с помощью t-sql, я тоже могу помочь;)

person Juozas    schedule 06.09.2018
comment
Как продемонстрировал Митч, запуск дополнительного расширенного сеанса не требуется. Поскольку сервер имеет сеанс расширенных событий по умолчанию с необходимой вам информацией (перейдите по ссылке Митча) - person Juozas; 06.09.2018

когда и какой пользователь SQL уменьшил файл журнала???

Вы должны быть в состоянии определить это по времени "last modified" в файле "ldf" (если только он не увеличился за это время автоматически — что маловероятно, поскольку его размер по-прежнему составляет всего 1 МБ).

Есть ли в базе данных зарегистрированная активность? Включена ли опция автосжатия базы данных?

Вы бы не увидели задание агента SQL, если бы фоновая задача выполняла эти операции сжатия. Этот параметр крайне не рекомендуется

Файл журнала уменьшен. Кто это сделал?

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

Для поиска трассировки по умолчанию сначала определите, включена ли трассировка по умолчанию. Это можно сделать, запустив sp_configure следующим образом:

SQL:

EXEC master.dbo.sp_configure 'show advanced options', 1; 
GO 
EXEC master.dbo.sp_configure 'default trace enabled';
GO

После проверки и запуска трассировки по умолчанию определите место, куда записываются файлы трассировки, запустив функцию fn_trace_getinfo.

SQL:

SELECT * 
FROM fn_trace_getinfo(default);
GO

Чтобы прочитать файл трассировки, используйте fn_trace_gettable. Это позволит извлечь все данные из файла трассировки и отобразить их в формате таблицы в SSMS для удобства просмотра.

SQL:

SELECT 
    TextData,
    HostName,
    ApplicationName,
    LoginName, 
    StartTime  
FROM 
[fn_trace_gettable]('C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\log_75.trc', DEFAULT) 
WHERE TextData LIKE '%SHRINKFILE%'; ----- Location of default trace will be different ,so kindly check that accordingly
person CR241    schedule 06.09.2018
comment
спасибо за хороший ответ. в моей БД не установлено автоматическое сжатие, и ни один агент sql не выполняет задания. но есть агент Тиволи, делающий вещи, которых я не вижу. Я сейчас разговариваю с теми, кто контролирует Тиволи... - person Lava; 11.09.2018