我有一个如下的SP。当使用计划触发器从 ADF 触发此操作时,它不会根据条件插入数据。但是,当从 ADF 手动触发时,它会按预期工作。知道这里可能出了什么问题吗?
CREATE PROC [schema1].[sp1] AS
BEGIN
DECLARE @date_today DATE
select @date_today = getdate()
print @date_today
Truncate table T1
IF NOT EXISTS
(select month from T3
where condition1 <= @date_today and condition2 >=@date_today)
BEGIN
INSERT INTO T1
VALUES ('0')
END
ELSE
BEGIN
INSERT INTO T1
VALUES ('1')
END
END
-尝试从 SSMS 手动执行此 SP,它按预期工作
-尝试从 ADF 活动手动执行,它有效
当使用计划触发器从 ADF 触发此操作时,它不会根据条件插入数据。
我尝试重现该问题,但使用手动触发器和计划触发器都可以正常工作。
您可以使用以下查询检查触发器运行的预期输出是什么,并重新检查数据并解决问题:
DECLARE @date_today DATE;
SELECT @date_today = GETDATE();
IF NOT EXISTS (SELECT Month FROM T3 WHERE Condition1 <= @date_today AND Condition2 >= @date_today)
BEGIN
select '0' as T1;
END
ELSE
BEGIN
select '1' as T1;
END
请仔细检查
T3
表中的数据,以确保条件(condition1
和condition2
)设置正确,并且没有数据异常导致存储过程在计划触发器执行期间表现不同。
还要确保在按计划更改触发器之前和之后没有发生对表数据的操作。