Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

3 sposoby na zwrócenie listy zadań agenta serwera SQL (T-SQL)

Często najszybszym sposobem uzyskania listy zadań SQL Server Agent jest po prostu rozwinięcie węzła SQL Server Agent w SSMS Object Explorer.

Ale to nie jedyny sposób. W zależności od środowiska może to nawet nie być opcją. Jeśli nie masz narzędzia SSMS lub narzędzia bazy danych, które pozwala zobaczyć zadania agenta SQL Server, może być konieczne użycie T-SQL.

W tym artykule przedstawiam trzy opcje zwracania listy zadań agenta SQL Server podczas korzystania z T-SQL.

Opcje

Możesz użyć następujących opcji, aby zwrócić listę zadań SQL Server Agent z T-SQL:

  • Opcja 1 :Wykonaj sp_help_job procedura składowana.
  • Opcja 2 :Zapytaj sysjobs_view widok.
  • Opcja 3 :Zapytanie o sysjobs stół bezpośrednio.

Wszystkie te opcje znajdują się w msdb bazy danych, a zatem muszą być uruchamiane w tej bazie danych. Możesz to zrobić, przechodząc do msdb bazy danych lub przez odpowiednią kwalifikację obiektu (np. msdb.dbo.sysjobs_view ).

Opcja 1:sp_help_job

Podczas korzystania z sp_help_job aby zwrócić listę zadań SQL Server Agent, po prostu wykonaj ją bez żadnych argumentów.

Tak:

USE msdb;
EXEC sp_help_job;

W tym przypadku przełączyłem się na msdb bazy danych, co oznaczało, że nie musiałem w pełni określać procedury z nazwą i schematem bazy danych.

Oto, jak to wygląda, gdy używam programu SSMS do wykonania go w moim środowisku testowym:

Zwróć określoną pracę

Tej samej procedury przechowywanej można użyć do zwrócenia szczegółów dowolnego z tych zadań. Kiedy to zrobisz, uzyskasz o wiele więcej szczegółów niż podczas wymieniania wszystkich ofert pracy.

Aby uzyskać szczegółowe informacje o pracy, musisz podać nazwę pracy lub identyfikator.

Oto przykład:

EXEC sp_help_job 
	@job_name = 'SqlAgentTest';

Wynik:

To zawiera listę zadań, a także wszystkie etapy zadania, harmonogramy i serwery docelowe.

Oto przykład kodu przy użyciu identyfikatora:

EXEC sp_help_job 
	@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';

Używając identyfikatora, możesz pominąć nazwę parametru, jeśli chcesz.

Przykład:

EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';

Składnia

Pełna składnia sp_help_job idzie tak:

sp_help_job { [ @job_id = ] job_id  
[ @job_name = ] 'job_name' }   
     [ , [ @job_aspect = ] 'job_aspect' ]   
     [ , [ @job_type = ] 'job_type' ]   
     [ , [ @owner_login_name = ] 'login_name' ]   
     [ , [ @subsystem = ] 'subsystem' ]   
     [ , [ @category_name = ] 'category' ]   
     [ , [ @enabled = ] enabled ]   
     [ , [ @execution_status = ] status ]   
     [ , [ @date_comparator = ] 'date_comparison' ]   
     [ , [ @date_created = ] date_created ]   
     [ , [ @date_last_modified = ] date_modified ]   
     [ , [ @description = ] 'description_pattern' ]

Zobacz dokumentację Microsoft dla sp_help_job dla wyjaśnienia każdego parametru, a także wartości, które każdy akceptuje.

Opcja 2:sysjobs_view Zobacz

Możesz użyć sysjobs_view aby zwrócić listę zadań SQL Server Agent.

Przykład:

SELECT * FROM msdb.dbo.sysjobs_view;

W tym przypadku określiłem nazwę widoku za pomocą bazy danych i schematu.

Ten widok zwraca podobny (ale nieco inny) zestaw wyników do sp_help_job procedura składowana, gdy jest używana bez żadnych argumentów.

Jeśli potrzebujesz szczegółów zadania, takich jak kroki, harmonogramy itp., musisz połączyć je z innymi tabelami, takimi jak sysjobsteps , sysjobschedules , sysjobactivity , sysjobhistory itp.

Oto przykład połączenia go z sysjobsteps tabela:

SELECT
	jv.name,
	jv.description,
	jv.start_step_id,
	js.step_id,
	js.step_name
FROM msdb.dbo.sysjobs_view jv
LEFT JOIN msdb.dbo.sysjobsteps js
ON jv.job_id = js.job_id;

Oto wynik w moim środowisku testowym:

Ponieważ jest to lewe sprzężenie, obejmuje zadania, które nie mają żadnych kroków (zobacz NULL w step_id i step_name kolumny dla zadania o nazwie TestJob ).

Aby ograniczyć to tylko do tych zadań z krokami, użyj połączenia wewnętrznego.

Opcja 3:sysjobs Tabela

Oto przykład przejścia bezpośrednio do sysjobs tabela:

SELECT * FROM msdb.dbo.sysjobs;

Podobnie jak w przypadku widoku, jeśli chcesz uzyskać szczegóły zadania, takie jak kroki, harmonogramy itp., musisz połączyć je z innymi tabelami, takimi jak sysjobsteps , sysjobschedules , sysjobactivity , sysjobhistory itp.

Zwykle zaleca się zapytanie o widok, a nie bezpośrednio o tabelę.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć unikalny indeks na kolumnie NULL?

  2. Nie można połączyć się z serwerem — błąd związany z siecią lub specyficzny dla instancji

  3. DEGREES() Przykłady w SQL Server

  4. Poprawka:„Oświadczenie BACKUP LOG jest niedozwolone, gdy model odzyskiwania jest PROSTY” w SQL Server (i SQL Edge)

  5. Jak utworzyć klucz podstawowy w SQL Server (przykłady T-SQL)