动态 SQL 加载 azure 副本数据 activity

Dynamic SQL to Load azure copy data activity

我正在尝试在副本数据 activity 中创建一个动态查询,以根据 table 中的时间戳提取数据。查找也得到正确的值

我试过了

  1. select * 来自 [dbo].t_tablename 其中 last_changed_date > @{formatDateTime(activity('Lookup_Get 最后修改 日期').output.firstRow.lastRecordTimeStamp,'yyyy-MM-ddTHH:mm:ssZ')}

  2. select * 来自 [dbo].t_tablename 其中 last_changed_date > @{activity('Lookup_Get 最后修改 日期').output.firstRow.lastRecordTimeStamp}

  3. select * 来自 [dbo].t_tablename 其中 last_changed_date > @activity('Lookup_Get 最后修改 日期').output.firstRow.lastRecordTimeStamp

和其他选项,但它总是给出错误 2200,这是一个语法错误。

有人可以建议方法是什么吗?

如果我试试这个(它有效) select * 来自 [dbo].t_tablename 其中 last_changed_date >'2019-11-27 16:17:00.000'

语法错误是来自 SQL 还是来自 ADF?

假设是SQL,动态构建语句时,where子句值两边还需要's(引号):

select * from [dbo].t_tablename where last_changed_date > **'**@{formatDateTime(activity('Lookup_Get Last changed date').output.firstRow.lastRecordTimeStamp,'yyyy-MM-ddTHH:mm:ssZ')}**'**

如果是 ADF,请尝试在连接表达式中构建值:

@concat('select * from [dbo].t_tablename where last_changed_date > ''', activity('Lookup_Get Last changed date').output.firstRow.lastRecordTimeStamp, '''')

无论哪种情况,您都需要在值周围加上引号。

select * 来自 [dbo].t_tablename 其中 last_changed_date > '@{activity('Lookup_Get Last changed date').output.firstRow.lastRecordTimeStamp} '

上面的代码现在可以工作了...因为它是一个日期时间,我们必须在“”

之间包含 activity