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

时间:2011-09-09 20:22:16

标签: sql sql-server sql-server-2005

我有以下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任务中的查询失败。到底是怎么回事?

*我尝试过没有任何别名的运行,这没有帮助。

1 个答案:

答案 0 :(得分:1)

我重新组织了您的更新查询,但它应该给出相同的结果。

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问题,请告诉我吗?