【问题标题】:Create a scheduled job using MSSQL Agent使用 SQL 代理创建计划作业
【发布时间】:2013-09-14 14:19:20
【问题描述】:

这是我第一次使用 SQL 代理,我没有太多经验!
我需要创建一个计划作业,每天检查表格的几列,并根据今天的日期更新其中的一个!

项目表的列:

CREATE TABLE [dbo].[Project](
[projectID] [int] IDENTITY(1,1) NOT NULL,
[prID] [nvarchar](50) NULL,
[projectName] [nvarchar](20) NOT NULL,
[startDate] [datetime] NOT NULL,
[dueDate] [datetime] NOT NULL,
[progress] [int] NULL,
[status] [bit] NULL,

我需要根据项目现在使用startDate 列和today's date 的进度每天更新status 列。基本上是这样的:

预期进度 = (todayDate-startDate)*(100/(dueDate-StartDate)) 现在通过比较progress 列和ExpectedProgress 我可以将status 列的值设置为true(准时)或false(延迟)

提前致谢!

【问题讨论】:

    标签: sql sql-server sql-agent-job sql-agent


    【解决方案1】:

    您需要创建具有上述查询的存储过程,然后将该存储过程添加为作业的步骤并安排它。您需要的查询应该是这样的:

    Update TableName Set ExpectedProgress = datediff(dd,startDate,todaydate)*(100/daediff(dd,StartDate,duedate))
    Update TableName set status=(case when progress>= ExpectedProgress then 'true' else 'false' end.
    

    创建工作的步骤如下: http://technet.microsoft.com/en-us/library/ms190268.aspx

    【讨论】:

      【解决方案2】:

      您可以使用计算列,每次查询时都会为您提供预期的进度。性能可能不如每次读取时重新计算的性能好,但对于合理数量的行和一个简单的函数,就像您在问题中所说的那样,它应该表现良好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-30
        • 1970-01-01
        • 1970-01-01
        • 2012-05-10
        • 2016-06-25
        相关资源
        最近更新 更多