Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

4 начина да получите история на работа в SQL Server

В тази статия представям четири опции за връщане на данни от историята на заданията на SQL Server Agent.

Опциите

Включих две опции за GUI и две опции за T-SQL:

  • Опция 1 :Използвайте SSMS GUI.
  • Вариант 2 :Използвайте графичния интерфейс на Azure Data Studio (чрез разширението на SQL Server Agent)
  • Опция 3 :Изпълнете sp_help_jobhistory съхранена процедура.
  • Опция 4 :Запитване в sysjobhistory таблица (и я присъединете с sysjobs_view изглед или sysjobs таблица).

Обектите на SQL Server Agent се намират в msdb база данни и така опциите на T-SQL трябва да се изпълняват в тази база данни. Можете да направите това, като преминете към msdb база данни първо или чрез подходящо квалифициране на обекта (напр. msdb.dbo.sysjobhistory ).

Опция 1:Използвайте SSMS GUI

Можете да използвате GUI на SQL Server Management Studio (SSMS), за да видите хронологията на заданията.

Можете да направите това, като разширите възела на SQL Server Agent в Object Explorer, след което щракнете с десния бутон върху Jobs и изберете Преглед на историята от контекстното меню:

Това отваря нов прозорец с хронологията на всички задачи в инструмента за преглед на регистрационни файлове:

Можете да прегледате хронологията на едно задание, като премахнете избора от другите задания в този екран. Като алтернатива можете да намерите това задание в Object Explorer и да щракнете с десния бутон върху него от там.

Вижте Преглед на историята на заданията на агент на SQL Server с SSMS за повече подробности и екранни снимки.

Опция 2:Използвайте графичния интерфейс на Azure Data Studio

Ако използвате Azure Data Studio, може да не го знаете, но също така имате опцията да прегледате историята на заданията на агент на SQL Server.

Начинът да направите това е чрез разширението на SQL Server Agent.

Ето как изглежда това:

На този екран разглеждаме историята на работа, наречена BackupKrankyKranesDB .

Историята на заданията е посочена в левия прозорец. Можете да щракнете върху всеки елемент в левия панел на историята, за да покажете подробностите за този елемент в десния прозорец.

Към момента на писане изглежда, че можете да преглеждате историята само на една работа в даден момент.

Вижте Преглед на историята на заданията на агент на SQL Server с Azure Data Studio за повече подробности и екранни снимки.

Опция 3:sp_help_jobhistory Съхранена процедура

Ако предпочитате (или трябва) да изпълнявате задачите си с T-SQL, тогава sp_help_jobhistory съхранената процедура е бърза и лесна опция за вас.

Когато извикате sp_help_jobhistory без никакви аргументи, той връща историята за всички работни места. Но когато подадете името или идентификатора на задание, той изброява само хронологията за това едно задание.

Ето един пример:

EXEC msdb.dbo.sp_help_jobhistory;

Резултат:

Обърнете внимание, че sp_help_jobhistory се намира в msdb база данни, така че трябва да сте сигурни, че я стартирате от там. Можете да направите това или като преминете към тази база данни (например с USE msdb ), или чрез квалифициране на съхранената процедура с базата данни и схемата (т.е. msdn.dbo.sp_help_jobhistory ).

Можете да получите историята на едно задание, като предадете идентификатора или името на това задание като аргумент.

Пример:

EXEC msdb.dbo.sp_help_jobhistory
	@job_name = 'BackupKrankyKranesDB';

Можете също да използвате @mode parameter за да укажете дали да се върнат всички колони в набора от резултати (FULL ), или просто обобщение (SUMMARY ).

EXEC msdb.dbo.sp_help_jobhistory
	@job_name = 'BackupKrankyKranesDB',
	@mode = 'FULL';

По подразбиране е SUMMARY .

Опция 4:sysjobhistory Таблица

sysjobhistory table е таблицата, която съхранява данни от историята на заданията.

Както при всяка таблица, можете просто да направите нещо подобно:

SELECT * FROM msdb.dbo.sysjobhistory;

Това ще върне всички колони в таблицата.

Тази таблица обаче не съхранява името на заданието (или описанието на заданието и т.н.). За да получите тези данни, ще трябва да присъедините тази таблица с други таблици/изгледи, като например sysjobs_view изглед или sysjobs маса. Това ще осигури по-пълен набор от резултати.

По-долу е дадена заявка, която можете да използвате, за да върнете по-пълни данни.

SELECT jv.name AS Job,
		jh.step_name AS Step,
		msdb.dbo.AGENT_DATETIME(jh.run_date, jh.run_time) AS RunDateTime,
		STUFF(STUFF(STUFF(RIGHT(REPLICATE('0', 8) + CAST(jh.run_duration as varchar(8)), 8), 3, 0, ':'), 6, 0, ':'), 9, 0, ':') AS RunDuration
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobhistory jh
ON jv.job_id = jh.job_id
ORDER BY Job, RunDateTime;

Резултат:

Можете да добавите още колони към SELECT списък според изискванията.

Ако се чудите защо тази заявка използва цял куп допълнителни неща, като AGENT_DATETIME() функция, STUFF() функция, RIGHT() , CAST() и REPLICATE() , това е заради начина на sysjobhistory съхранява своите стойности за дата и час.

Ако не бях използвал тези функции, стойностите за дата и час щяха да бъдат по-малко четими.

По-специално run_date , run_time и run_duration колони съхраняват своите данни като int стойности. По подразбиране данните в тези колони изглеждат така:

Това може да затрудни четенето на някои от нас, хората. Особено run_duration колона. Затова използвахме различните функции в горната заявка, за да представим тези колони в по-четлив от човека формат.

Може да забележите, че sp_help_jobhistory Съхранената процедура страда от същия проблем.

Също така трябва да спомена, че AGENT_DATE() изглежда е недокументирана функция.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Наистина ли трябва да използвам SET XACT_ABORT ON?

  2. Бърз и най-добър трик за възстановяване на MDF файлове на SQL Server

  3. ВЪВЕТЕ СТОЙНОСТИ, КЪДЕТО НЕ СЪЩЕСТВУВА

  4. Как да промените модела за възстановяване на база данни на SQL Server с помощта на T-SQL

  5. Гледайте за таблица с нови записи в sql базата данни