SSIS SQL任务查询无故添加交叉连接



我有以下UPDATE查询:

    UPDATE    A
    SET       A.EARLY_SHIFT =
        (SELECT     DATEPART(hour, S.SCHED_START - A.FIRST_LOGIN) * 3600 
                  + DATEPART(minute, S.SCHED_START - A.FIRST_LOGIN) * 60 
                  + DATEPART(second, S.SCHED_START - A.FIRST_LOGIN) AS Expr1)
         FROM   DLY_AGT_ACTIVITY AS A
         INNER JOIN  DLY_AGT_SCHEDULES AS S
              ON A.DATE = S.DATE AND RIGHT(A.ID, 5) = RIGHT(S._ID, 5)

这在管理工作室运行完美。但是,在我的SSIS包的sql任务中,它添加了一个CROSS JOIN,如下所示:

UPDATE A
    SET A.EARLY_SHIFT =
      (SELECT  DATEPART(hour, S.SCHED_START - A.FIRST_LOGIN) * 3600 
             + DATEPART(minute, S.SCHED_START - A.FIRST_LOGIN) * 60 
             + DATEPART(second, S.SCHED_START - A.FIRST_LOGIN) AS Expr1)
        FROM DLY_AGT_ACTIVITY AS A 
         INNER JOIN DLY_AGT_SCHEDULES AS S 
             ON A.DATE = S.DATE AND RIGHT(A.ID, 5) = RIGHT(S._ID, 5) CROSS JOIN A

这使得查询在我的sql任务中失败。到底发生了什么事?

*我试过不使用任何别名运行,但是没有帮助。

我已经重新构造了您的更新查询,但它应该给出相同的结果。

UPDATE DLY_AGT_ACTIVITY
SET EARLY_SHIFT = DATEPART(hour, S.SCHED_START - FIRST_LOGIN) * 3600 
    + DATEPART(minute, S.SCHED_START - FIRST_LOGIN)                                                
    * 60 + DATEPART(second, S.SCHED_START - FIRST_LOGIN) 
FROM         DLY_AGT_SCHEDULES AS S 
WHERE   DLY_AGT_ACTIVITY.[DATE] = S.DATE 
AND     RIGHT(ID, 5) = RIGHT(S._ID, 5)

你能在你的包中尝试一下,并让我知道它是否解决了SSIS问题吗?

最新更新