我为管道创建了 2 个变量,如下所示:
我正在尝试在复制数据活动中运行以下增量查询
@concat('
SELECT
*
FROM
[',variables('schema'),'].[',if(variables('custom_table_list_flag'),item(),item().name),']
WHERE
UPDATE_DATE > [', variables('startdate'), ']
AND UPDATE_DATE <= [', variables('currentdate'), ']')
但是,我在运行管道时遇到以下错误:
“源”端发生故障。 错误代码=SqlOperationFailed,'类型=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,消息=A 数据库操作失败并出现以下错误:“语法不正确 靠近 ')'.',Source=,''Type=System.Data.SqlClient.SqlException,Message=不正确 ')'附近的语法。,来源=.Net SqlClient Data 提供程序,SqlErrorNumber=102,类=15,错误代码=-2146232060,状态=1,错误=[{类=15,编号=102,状态=1,消息=不正确 ')' 附近的语法.,},],'
此错误是因为您在查询中给出的表达式错误。为了使其成功,您需要在管道中进行一些更改。以下是这些变化。
currentDate
。要将表达式分配给该变量,请添加 set variable activity
。通过单击 add dynamic content
定义表达式。表达方式:
@formatDateTime(utcNow(),'yyyy-MM-dd')
Startdate
变量给出的表达式也是无效的 ADF 表达式。通过单击“值”文本框中的“添加动态内容”,应将正确的表达式指定为 @adddays(variables('currentDate'),-1)
。@concat()
来构成 SQL 脚本。下面是正确的表达方式。SELECT * FROM
['@{variables('schema')}'].['@{if(variables('custom_table_list_flag'),item(),item().name)}']
WHERE UPDATE_DATE > '@{ variables('startdate')} ']
AND UPDATE_DATE <= '@{ variables('currentdate')}'