如何在每个月的第一周工作日安排SQL代理作业?

时间:2016-09-19 16:28:56

标签: c# .net sql-server ssis sql-agent-job

我想在每个月的第一个星期(即不包括sat,sun)安排我的包裹。 假设每月的第一天是星期六或星期日,那么星期一只应执行该程序。 假设几个月的第一天落在任何一周(星期一,星期二,星期三,星期四,星期五),然后在同一天执行该程序。 请告诉我如何在sql代理中设置日程安排?

提前致谢

2 个答案:

答案 0 :(得分:2)

您可以将其安排为每天运行,只需检查代码中的日期,并仅在日期匹配时执行。

--WorkDay of current month
DECLARE @FoM DATETIME
        SELECT
        @FoM =
        CASE 
        WHEN DATENAME(WEEKDAY, dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)) = 'Saturday'
            THEN dateadd(mm, DATEDIFF(MM, 0, getdate()), 0) + 2
        WHEN DATENAME(WEEKDAY, dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)) = 'Sunday'
            THEN dateadd(mm, DATEDIFF(MM, 0, getdate()), 0) + 1
        ELSE dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)
        END 

IF @FoM = CAST(GETDATE() as DATE)
BEGIN
...your code to execute...
END

First business day of the current month - SQL Server

答案 1 :(得分:1)

您可以在每个月的第一个星期一安排作业,如下面在作业的SQL代理计划属性中所述:Scheduling First Monday of Every month