Запрос задачи SSIS SQL, добавляющий перекрестное соединение без причины - PullRequest
1 голос
/ 10 сентября 2011

У меня следующий запрос ОБНОВЛЕНИЯ:

    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)

Это в Management Studio работает отлично.Однако в моей задаче sql моего пакета служб SSIS он добавляет 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 Ответ

1 голос
/ 10 сентября 2011

Я реструктурировал ваш запрос на обновление, но он должен дать тот же результат.

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...