Sql Server Job 簡單使用


趕在月末寫個博客。

-- 根據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=0 then 'Failed'  
         when a.run_status= 1 then 'Succeeded'
         when a.run_status= 2 then 'Retry'
         when a.run_status= 3 then 'Canceled'
         else 'Unknown'  
         end as run_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://blog.csdn.net/dba_huangzj/article/details/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描述,日常基本夠用吧, 或者還可以參考一下 :http://www.cnblogs.com/kerrycode/p/3279559.html 這個文章,寫的很全。
在此處補充一下 JOb 設置屬性,有的時候我們可能看某個JOB但是發現其歷史記錄沒有,或者只有1天的,可能就是設置的原因

這個地方可以根據實際的需求也對其進行日志,記錄行數進行調整。
要查看某個JOB的歷史記錄也可以直接右擊---查看歷史記錄,便能夠看到其歷史記錄及執行狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM