作業一直執行

2022-02-16 07:48:02 字數 2047 閱讀 6478

背景:乙個作業有7個步驟,前面的步驟成功/失敗都轉到下一步,直至最後退出,作業計畫是每天早上8點執行。步驟中的語句是例行檢查指令碼,之前的歷史記錄都是一分鐘內完成。此次重啟資料庫伺服器後,檢查發現此作業在重啟受影響範圍內。檢視作業歷史記錄,顯示作業正在進行,持續時間為3天8小時43分鐘,而且持續時間一直在增長。

首先,懷疑步驟中的語句有問題,會不會是對大表進行操作(有死鎖檢查,不會堵這麼久)?語句中有迴圈、waitfor關鍵字?檢視第4步(前3步已執行成功),只是從errorlog中取前一天登入失敗的資訊,然後郵件傳送。

其次,確認作業是否真正在執行。網上找了語句檢視作業狀態,根據返回結果及結果解釋——作業已完成

--

獲取作業狀態

declare

@job_id

asuniqueidentifier

select

@job_id

=job_id from msdb.dbo.sysjobs where name =

'dba_backup_full(00:00)

'exec master..sp_msget_jobstate @job_id

1-正在執行;4

-表示完成(成功或失敗)

view code

但我看到歷史記錄中的正在進行,更相信作業還在執行。檢視活動監視器,作業上次執行完成時間是3/22,計畫下次執行時間3/27。歷史記錄表中,最後一次執行只有前3步的記錄,sysjobactivity表中查詢的結果如下:

sql server**服務每次重啟後,將建立乙個新的會話,並且 msdb.dbo.sysjobactivity 表由所有現有的已定義作業填充。session_id=3可以看出,重啟前最後一次開始執行時間為2015-03-23 08:00,沒有停止時間,表示作業一直在「執行」,也沒有計畫下次執行時間。2015-03-26 08:03完成重啟,正常來說,此時已過了當天作業計畫執行時間,所以此時,只看到計畫下次執行時間為2015-03-27 08:00:00.000

右擊停止作業,報錯說作業未執行,可是再次檢視歷史記錄的時候,作業正在執行,持續時間進一步增大。

嘗試禁用作業,再開啟作業依然無效。而且,在禁用的狀態下,檢視歷史記錄,gui顯示作業正在執行、持續時間繼續增長。此時有點懷疑,gui有問題。

群友提出檢查許可權以及**日誌,檢視了對應項,沒有異常資訊。比起最初想找到問題根源,現在更想盡快把作業給「停」下來,讓它不要再「正在執行」。正準備把問題反饋到公司dba組時,腦袋裡一閃,右擊停止作業報錯,那右擊開始作業步驟會怎樣呢?反正也不是特別重要的作業,直接執行作業,意外地作業執行成功!再到歷史記錄下檢視詳細資訊,顯示作業執行成功,作業從第1步開始執行,用時僅用1秒鐘!

活動監視器下檢視相應作業,顯示上次完成時間為剛才執行的,msdb.dbo.sysjobactivity下的記錄如下:

重啟後最後一次開始執行時間為2015-03-26 17:14:53,停止時間為2015-03-26 17:14:54,有相應的歷史記錄id。

對於為什麼會出現這種情況,自己也解釋不了,稀里糊塗的碰到了,然後稀里糊塗的「解決」了,也許最開始就不是什麼大問題,只是因為過於較真發現了這樣乙個現象。如果沒有手動執行作業,也許檢視歷史記錄,它會一直顯示在執行,而上次完成時間永遠定格在3/22。雖然沒找到問題根源,但至少讓作業能按計畫預期執行。

winfom實現關閉後一直執行

using plog using system using system.collections.generic using system.diagnostics using system.linq using system.reflection using system.runtime.inter...

實現滑鼠一直運動

1.安裝好python和pip,並保證二者能夠正常使用 2.使用下方命令安裝指定版本的 pyautogui 庫 pip install pyautogui 0.9.50 3.撰寫下方 python importpyautogui importrandom importtime whiletrue x...

Service使用 一直執行的後台服務

專案中需要實現訊息推送 不依賴程式是否開啟,自動隔一段時間去伺服器獲取相關訊息,原理類似郵件系統。開始想到用鬧鐘 alarmmanager,以前做開獎提醒用過。後來嘗試用service。涉及到幾點 1 退出程式,service依然執行 2 開機,啟動service 3 不重複啟動service 注意...