繁体   English   中英

SSIS查找转换-SQL查询不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM