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

3 sposoby uzyskania etapów zadania zadania agenta serwera SQL (T-SQL)

W tym artykule przedstawiam trzy opcje zwracania kroków zadania agenta SQL Server podczas korzystania z T-SQL.

Opcje

Możesz użyć następujących opcji T-SQL, aby zwrócić kroki zadania SQL Server Agent:

  • Opcja 1 :Wykonaj sp_help_job procedura składowana.
  • Opcja 2 :Wykonaj sp_help_jobstep procedura składowana.
  • Opcja 3 :Zapytaj o sysjobsteps tabeli (i dołącz do niej za pomocą sysjobs_view Jeśli wymagane).

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.sysjobsteps ).

Opcja 1:sp_help_job

Gdy zadzwonisz do sp_help_job bez żadnych argumentów, po prostu zwraca listę zadań. Ale kiedy podasz nazwę lub identyfikator pracy, wyszczególnia ona szczegóły tej pracy, w tym jej kroki.

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:sp_help_jobstep

sp_help_jobstep procedura składowana jest przeznaczona specjalnie do zwracania kroków zadania. Ale to wszystko, co powraca.

Więc jeśli nie chcesz widzieć żadnego harmonogramu i serwerów docelowych itp., może to być to, czego szukasz.

Możesz przekazać sp_help_jobstep nazwę zadania lub jego identyfikator (ale nie oba).

Oto przykład:

EXEC sp_help_jobstep
	@job_name = 'SqlAgentTest';

A oto jak wygląda wynik dwuetapowej pracy:

Możesz również określić identyfikator kroku, jeśli chcesz, aby zwracany był tylko określony krok. Nadal musisz jednak określić, do której pracy jest przeznaczony (za pomocą identyfikatora lub nazwy).

Oto przykład określenia drugiego kroku w pracy:

EXEC sp_help_jobstep
	@job_name = 'SqlAgentTest', 
	@step_id = 2;

Identyfikator kroku musi faktycznie istnieć dla tego zadania. Na przykład określenie identyfikatora kroku 3 dla powyższej pracy powoduje błąd.

Opcja 3:sysjobsteps Tabela

Inną opcją jest uruchomienie zapytania względem sysjobsteps stół.

Ta tabela zawiera kroki wszystkich zadań, więc jeśli chcesz tylko kroki dla określonej pracy, musisz przekazać identyfikator pracy.

Oto przykład zapytania sysjobsteps tabela dla etapów określonej pracy:

SELECT * FROM msdb.dbo.sysjobsteps
WHERE job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Zwraca to podobny wynik do sp_help_jobstep procedura.

Jeśli chcesz, aby niektóre szczegóły zadania zostały zwrócone (takie jak jego nazwa), możesz uruchomić połączenie między sysjobsteps i sysjobs_view .

Przykład:

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można zalogować się do SQL Server + SQL Server Authentication + Błąd:18456

  2. Dostawca OLE DB „Microsoft.Jet.OLEDB.4.0” nie może być używany do zapytań rozproszonych

  3. Jak pobrać ułamki dziesiętne podczas zaokrąglania średniej w SQL?

  4. Korzystanie z DMV ( Dynamic Management View ) i DMF ( Dynamic Management Function ) | Rozwiązywanie problemów z wydajnością serwera SQL -4

  5. Jaki typ danych powinien być używany do przechowywania numerów telefonów w SQL Server 2005?