gpt4 book ai didi

sql-server - 获取上次成功运行作业的日期?

转载 作者:行者123 更新时间:2023-12-02 11:52:11 25 4
gpt4 key购买 nike

我有一个执行存储过程的单步作业。我想获取上次成功作业执行时间的日期,以便我可以只更新增量而不是整个数据集。

现在我的作业设置每天运行一次,所以我有一个默认参数,如果它为空,我将其设置为 GETDATE() - 1,所以我仍在更新增量,但我想要什么do 将日期设置为上次成功执行作业的日期。

exec dbo.usp_UpdateFrom @LastSuccessfulExecutionTime

当前程序类似于

CREATE PROCEDURE dbo.usp_UpdateFrom
@FromDate datetime = NULL --would like to pass last successful execution time of the job
AS
IF @FromDate IS NULL
SET @FromDate = GETDATE() - 1

-- do stuff
END

最佳答案

您想要的表是 sysjobssysjobhistorymsdb 中。尽管被警告! SQL Server只维护一定数量的记录,因此如果作业太多而历史记录不够大,最终将没有历史记录。

以下代码检索给定作业名称的 job_id,并查询历史记录表以查找上次成功完成的运行(即步骤 0,状态 1)。正如您所看到的,您必须将运行时间转换回日期,因为 SQL Server 将其存储在两个 int 列中:

DECLARE @job_id binary(16)
SELECT @job_id = job_id FROM msdb.dbo.sysjobs WHERE (name = N'YourJobName')

SELECT TOP 1
CONVERT(DATETIME, RTRIM(run_date))
+ ((run_time / 10000 * 3600)
+ ((run_time % 10000) / 100 * 60)
+ (run_time % 10000) % 100) / (86399.9964) AS run_datetime
, *
FROM
msdb..sysjobhistory sjh
WHERE
sjh.step_id = 0
AND sjh.run_status = 1
AND sjh.job_id = @job_id
ORDER BY
run_datetime DESC

关于sql-server - 获取上次成功运行作业的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2112838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com