Как я могу просмотреть полную историю заданий SQL?
В SQL Server Management Studio, когда я "Просмотреть историю" для задания SQL, мне показываются только последние 50 выполнений задания.
Как просмотреть полный журнал каждого выполнения задания SQL с момента его создания на сервере?
4 ответа
Система заданий SQL Server ограничивает общее количество записей истории заданий как по заданию, так и по всей системе. Эта информация хранится в базе данных MSDB.
Очевидно, что вы не сможете вернуться и просмотреть информацию, которая была сброшена с тех пор, но вы можете изменить свойства агента SQL Server и увеличить количество записей, которые будут записываться с этого момента.
В свойствах агента SQL Server:
- Выберите страницу истории
- Измените "Максимальный размер журнала истории заданий (строк)" и "Максимальное количество строк истории заданий на задание" в соответствии с требованиями или измените способ удаления исторических данных задания в зависимости от их возраста.
Это не вернет вам вашу историю, но поможет с вашими будущими запросами!
Я почти уверен, что история заданий хранится где-то в отдельной базе данных в самом SQL Server. В этом случае вы можете использовать SQL Server Profiler для перехвата операторов SQL, отправленных SQL Server Management Studio, а также для определения имен таблиц и т. Д.
Ваш результат зависит от нескольких вещей.
- Что вы установили в настройках "Ограничить размер журнала заданий" и "Автоматически удалять историю агента" [щелкните правой кнопкой мыши на SQL Agent | Свойства | История] и
- выполняете ли вы задачу "Очистка истории" в плане обслуживания (или вручную для этого способа). Задача MP запускает
msdb.dbo.sp_purge_jobhistory
хранимая процедура с параметром "самая старая дата", который соответствует выбранному вами периоду.
Вы можете использовать временную таблицу для изменения срока хранения данных. Сохранение истории заданий в управляемом экземпляре Azure SQL:
ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD StartTime DATETIME2 NOT NULL DEFAULT ('19000101 00:00:00.0000000')
ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD EndTime DATETIME2 NOT NULL DEFAULT ('99991231 23:59:59.9999999')
ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime)
ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD CONSTRAINT PK_sysjobhistory PRIMARY KEY (instance_id, job_id, step_id)
ALTER TABLE [msdb].[dbo].[sysjobhistory]
SET(SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[sysjobhistoryall],
DATA_CONSISTENCY_CHECK = ON, HISTORY_RETENTION_PERIOD = 1 MONTH))
select * from msdb.dbo.sysjobhistoryall
Такой подход позволяет определить срок хранения как время (здесь 1 MONTH
) вместо максимального количества строк на задание /xaximum размер журнала истории заданий (строк).