[英]SSIS Lookup Transformation - SQL query not working
我有一个SSIS包,可部署到SQL Server 2012 SSISDB中,它使用查阅转换。 我正在使用SQL查询的结果来执行查找比较。
这不起作用,我将所有行都显示为“ No match”。
查询如下:
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)
我想念什么吗? 为什么会这样呢?
为什么会这样呢?
SSIS查找组件只能考虑由诸如您的多语句查询返回的第一个结果。
当您没有SET NOCOUNT ON
,查询返回的第一个结果将是消息“受影响的1行”或类似的消息。 查找组件将无法查看查询后半部分返回的结果集。
这就是为什么将NOCOUNT设置为ON可以解决此问题的原因。 查询的第一部分不会返回“受影响的行”消息,返回的唯一内容将是查询的第二部分的结果集,然后由查询组件进行处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.