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ę.