【问题标题】:Query to filter the data in ODBC Source SSIS using variable查询以使用变量过滤 ODBC Source SSIS 中的数据
【发布时间】:2016-03-02 20:54:47
【问题描述】:

我正在 ODBC 源中编写源查询以过滤列 (nvarchar) 上的记录以拉取增量负载。

在 SouceCodeExpression 中,我编写了以下代码。

"Select * from Source_AuthorizationHistory where UpdateDate >" + "'@[User::LastUpdate]'"

这里的 UpdateDate 是来自源的 nvarchar 数据类型,我必须根据目标中的最后更新日期过滤来自源的记录。所以,这里@[User::LastUpdate] 变量数据类型是String

@[用户::上次更新] = 从 Target_AUTHORIZATIONHISTORY 中选择 Convert(nvarchar,Cast((Max(ETL_updated)-1) as Date)) 作为 LastUpdated

帮我写这个源查询表达式

"Select * from Source_AuthorizationHistory where UpdateDate >" + "'@[User::LastUpdate]'"

我收到以下错误ErrorCode

【问题讨论】:

  • 您的报价放错了地方。您应该不厌其烦地在表达式编辑器中按“评估”,然后您会看到这不会导致有效的查询。
  • 是的..我通过评估更正了..

标签: sql ssis ssis-2012


【解决方案1】:

假设@[User::LastUpdate] 的值是正确的

你有这个:

"Select * from Source_AuthorizationHistory where UpdateDate >" + "'@[User::LastUpdate]'"

你需要这样做:

"Select * from Source_AuthorizationHistory where UpdateDate > (" +  @[User::LastUpdate] + ")"

因为这个表达式将等同于:

Select * from Source_AuthorizationHistory where UpdateDate > (Select Convert(nvarchar,Cast((Max(ETL_updated)-1) as Date)) as LastUpdated from Target_AUTHORIZATIONHISTORY)

【讨论】:

  • [SQLCODE:> : 常量、聚合、$$、:、(、+、-、%ALPHAUP、 %EXACT、%SQLSTRING、> %SQLUPPER、%STRING 或 %UPPER>] [缓存错误:errdone+1^%qaqqt>] > [详细信息:] [%msg: 以下列之一开头:标识符、常量、聚合、$$、(、:、+、-、> %ALPHAUP、%EXACT、%SQLSTRING、
  • 当您在 SSMS 中运行此查询时,它是否返回任何数据? Select * from Source_AuthorizationHistory where UpdateDate > (Select Convert(nvarchar,Cast((Max(ETL_updated)-1) as Date)) as LastUpdated from Target_AUTHORIZATIONHISTORY)
  • 实际上它们是 2 个独立的数据库。一个在 ODBC 连接中,一个在 SSMS 中,所以,我无法运行此查询..
  • 那么你是如何在 SSIS 中使用这个查询的?
  • 我实际上声明了变量@[User::LastUpdate] 认为它将保存此查询的结果(Select Convert(nvarchar,Cast((Max(ETL_updated)-1) as Date))是 2016-02-25 .. 简单地说,我假设 @[User::LastUpdate] = 2016-02-25
猜你喜欢
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 2022-01-22
  • 2016-04-03
  • 1970-01-01
相关资源
最近更新 更多