2014-10-09 47 views
0

我需要創建一個T-SQL並只生成計劃在接下來的5個小時內發生的任務。T-SQL任務(使用SQL <strong>Server 2008 Express的</strong>我真的)腳本(<strong>過程/函數</strong>),採用 「<strong>任務</strong>」 表中獲取條目生成腳本

在 「任務」 表,我應該有任務,工作樣特性:

  • 發生:一次或遞歸

  • 頻率:每x 天,周,月

  • 取決於頻率

  • 對於日報:每x 小時,分鐘
  • 對於週刊 -一週天任務的時候應該發生
  • 對於每月 - 第一次,第二次,最後一次-天,週日,週末 -
    星期幾O R的第一,第二,第三.31。

當我運行該腳本,我應該得到只有在任務每x 分鐘發生時將在未來的5小時或更少的情況下發生的任務。 因此,該腳本實際上應該做的是使用SQL Server作業中的所有選項來執行任務。

例1:我創建了一個任務「檢查電子郵件」,每天發生,14:00和15:00之間。當我在09:00運行腳本時,我會得到任務:「檢查電子郵件」時間:剩下5個小時直到任務,因爲它每天都會發生,我應該能夠每天在我滾動腳本時獲得這個結果,僅當即5小時或更少的範圍。

例2:任務「發送小時的報告」時發生每月,在第1周天(週末不),在01:00 PM。在這個月的第一個星期幾上午08:00運行腳本,我應該得到任務:「發送小時報告」時間:5小時,直到任務

我知道這是一個相當大的請求,但希望有人會發現它很容易對我來說什麼似乎很難。

+0

你的問題並不十分清楚。你在問關於SQL工作嗎?或者,您正在編寫的某種東西會實現與其他許多可用事件相同類型的日程安排?如果是後者,我會問爲什麼你不能使用預製調度器。當你發現它很複雜。 – 2014-10-09 18:57:13

+0

不問關於sql作業,它是作業的替代方案。預先制定的時間表是一個很好的理念。我需要該腳本來查看計劃在接下來的5個小時內完成的任務。 – Cosmin 2014-10-11 11:32:04

回答

0

您還應該存儲每個作業上次執行的日期/時間(至少對於每x小時/分鐘配置的作業)。這個想法是計算每個作業的下一個執行日期/時間,如果距離不到5個小時,則返回它。如果作業每x小時/分鐘配置一次,請使用DATEADD並檢查結果是否在配置的時間範圍內。如果每天(在特定時間)配置作業,則只需檢查指定時間是否少於5小時(但仍在將來)。我做了類似的功能,檢查所有情況並不是一件容易的事情(花了我幾天的編碼)。

+0

我會爲此製作一個執行隊列。對於在特定的一週或第一天,每月的第二天或每月發生的任務,我覺得更加困難。 – Cosmin 2014-10-11 20:04:09