Sql Server Job 簡單使用

2021-09-08 09:46:49 字數 2883 閱讀 1911

趕在月末寫個部落格。

--

根據sp來檢查用的那個作業

select

*from msdb.dbo.sysjobs job with

( nolock)

inner

join msdb. dbo.sysjobsteps stp with

(nolock )

on stp .job_id =

job .job_id

where stp .command like n'

% sp_name %'--

禁用job

exec

msdb..sp_update_job

@job_name='

job_name',

@enabled=0

--0為禁用,1為啟用

--刪除job ,具體引數查 msdn,此處不再多說

exec msdb.dbo.sp_delete_job @job_name='

job_name

'; --

job_name 參看select name from msdb.dbo.sysjobs

exec msdb.dbo.sp_start_job @job_name='

job_name

'exec msdb.dbo.sp_stop_job @job_name='

job_name'--

查詢 已經啟用 job 的執行狀態

select b.name, a.step_name, msdb.dbo.agent_datetime( run_date, run_time) as

'rundatetime

',

a.run_duration,

case

when a.run_status=

0then

'failed

'when a.run_status=

1then

'succeeded

'when a.run_status=

2then

'retry

'when a.run_status=

3then

'canceled

'else

'unknown

'end

asrun_status,

a.[message

]from msdb .dbo. sysjobhistory a inner

join msdb .dbo. sysjobs b on a.job_id =

b .job_id

inner

join msdb. dbo.sysjobsteps s on a .job_id = s .job_id and a.step_id =

s .step_id

where b .enabled =

1

其中 msdb.dbo.agent_datetime(run_date,run_time) 為sql server 

2005

之後引入的未公開函式,可以直接使用。

具體的解釋可以參看 : http:

8300178

這個鏈結

我們還可以根據自己的需求也對上面的 sql 進行修正與調整,找出失敗的,或者某個時間點的。

--

查詢那些job 是禁用的

select job_id , name , enabled from

msdb.dbo.sysjobs

where enabled =0--

常用 job 表

select

*from msdb.dbo.sysjobs --

儲存將由 sql server **執行的各個預定作業的資訊

select

*from msdb.dbo.sysjobsteps; --

包含 sql server **要執行的作業中的各個步驟的資訊

select

*from msdb.dbo.sysjobhistory --

包含有關 sql server **執行預定作業的資訊

select

*from msdb.dbo.sysjobstepslogs; --

包含所有 sql server **作業步驟的作業步驟日誌

select

*from msdb.dbo.sysjobschedules --

包含將由 sql server **執行的作業的計畫資訊

select

*from msdb.dbo.sysjobactivity; --

記錄當前 sql server **作業活動和狀態

select

*from msdb.dbo.sysjobservers --

儲存特定作業與乙個或多個目標伺服器的關聯或關係

select

*from msdb.dbo.sysjobs_view; --

select

*from msdb.dbo.syscategories --

包含由 sql server management studio 用來組織作業、警報和操作員的類別

以上均為sql描述,日常基本夠用吧, 或者還可以參考一下 : 這個文章,寫的很全。

在此處補充一下 job 設定屬性,有的時候我們可能看某個job但是發現其歷史記錄沒有,或者只有1天的,可能就是設定的原因

這個地方可以根據實際的需求也對其進行日誌,記錄行數進行調整。

要檢視某個job的歷史記錄也可以直接右擊---檢視歷史記錄,便能夠看到其歷史記錄及執行狀態。

SQLServer JOB無法執行的問題。

今天建乙個job 一直無法執行。顯示錯誤資訊為 message executed as user nt authority system.login failed for user os regets01 sqlstate 28000 error 18456 the step failed.當時我也...

SQL Server job突然不工作了

朋友負責的乙個系統突然不工作了,讓我幫忙查一下原因。結果我抓了乙個profiler trace發現根本沒有找到要執行的語句,後來從sql server job中發現了這個功能是在job完成的。這個job本來是2分鐘執行一次,但是發現已經很久沒執行了,手動執行了一下是正常的,為什麼突然不工作了?而且發...

SpringBoot Swagger簡單使用

io.springfox springfox swagger2 2.9.2 io.springfox springfox swagger ui 2.9.2 import org.springframework.context.annotation.bean import org.springfram...