У меня есть пакет SSIS для развертывания в SSISDB SQL Server 2012, и он использует преобразование Lookup. Я использую результат SQL-запроса для выполнения сравнения.Преобразование SSIS Lookup - запрос SQL не работает
Это не работает, и я получаю все строки, как «Нет соответствует».
Запрос заключается в следующем:
DECLARE @LastJobDate DATETIME
SELECT @LastJobDate = COALESCE(MIN(S.LastImportDate), DATEADD(DAY, -2, GETDATE()))
FROM Stations S INNER JOIN
Lines L ON S.ID_Line = L.ID_Line
WHERE L.Name LIKE 'lineType%' AND S.ImportData = 1 AND S.Active = 1
SELECT J.ID_Line, J.ID_Job, J.SerialNumber
FROM [Jobs] J INNER JOIN
[Lines] L ON J.ID_Line = L.ID_Line
WHERE L.Name LIKE 'lineType%'AND J.TimeStamp >= DATEADD(HOUR, -1, @LastJobDate)
Случайно, я обнаружил, что если я помещаю [SET NOCOUNT ON]
на самого начало запроса, он будет работать.
DECLARE @LastJobDate DATETIME
SET NOCOUNT ON
SELECT @LastJobDate = COALESCE(MIN(S.LastImportDate), DATEADD(DAY, -2, GETDATE()))
FROM Stations S INNER JOIN
Lines L ON S.ID_Line = L.ID_Line
WHERE L.Name LIKE 'lineType%' AND S.ImportData = 1 AND S.Active = 1
SELECT J.ID_Line, J.ID_Job, J.SerialNumber
FROM [Jobs] J INNER JOIN
[Lines] L ON J.ID_Line = L.ID_Line
WHERE L.Name LIKE 'lineType%'AND J.TimeStamp >= DATEADD(HOUR, -1, @LastJobDate)
Я что-то не хватает? Почему это поведение?
Вот что делает 'SET NOCOUNT ON': http://stackoverflow.com/questions/1483732/set-nocount-on-usage Возможно, это были запросы до, отправили счетчик записей и, следовательно, повредили ваш Lookup , – Nebi
@Nebi. В самом деле, похоже, что я буду более внимательно читать о том, что действительно делает «SET NOCOUN ON», вместо поиска проблем в LookUp Transformation. – nunopacheco
Я бы также рекомендовал посмотреть, что такое «блокирующие» преобразования. Если ваша трансформация 'aggregate' не будет развиваться до тех пор, пока все строки не будут перенесены, что может отрицательно сказаться на производительности. Почти любой тип агрегации для целей сверки или ведения журнала может быть более эффективно реализован с помощью задач «Выполнять SQL» в вашем потоке управления. – iamdave