首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Azure ADF中动态源增量复制cdc记录

在Azure ADF中动态源增量复制cdc记录
EN

Stack Overflow用户
提问于 2021-12-15 09:20:03
回答 1查看 223关注 0票数 0

我在Azure ADF中创建了一个管道,用于从源db中的54个表中复制已更改的行。我跟随了Azure的向导。并对其进行修改以支持动态表。

我使用一个查找来获取所有活动的CDC表,然后对每个活动在每个CDC表上执行副本,它运行良好。但是,当我试图在Azure指南中添加Trigger_Start_Time示例代码时,我会得到以下错误:

数据库操作失败,出现以下错误:

‘{’附近不正确的语法。‘ “{”附近不正确的语法。 、SqlErrorNumber=102、Class=15、State=1.

下面是我试图执行的代码的示例:

代码语言:javascript
复制
@concat('DECLARE @begin_time datetime, @end_time datetime, @from_lsn binary(10), @to_lsn binary(10) ; 
SET @begin_time = ''',pipeline().parameters.TriggerStartTime,''';
SET @end_time = ''',pipeline().parameters.TriggerEndTime,''';
SET @from_lsn = sys.fn_cdc_map_time_to_lsn(''smallest greater than or equal'', @begin_time);
SET @to_lsn = sys.fn_cdc_map_time_to_lsn(''largest less than or equal'', @end_time);
SELECT count(1) changecount FROM cdc.fn_cdc_get_net_changes_dbo_@{item().Table_Name}(@from_lsn, @to_lsn, ''all'')')

我使用@{item().Table_Name}设置表名。如果我硬编码表名为:"Customer“,效果很好。

当我在查询中使用源参数时,我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-15 12:52:38

当在concat()函数中包含当前项时,将其用作item().Table_Name

代码语言:javascript
复制
@concat('DECLARE @begin_time datetime, @end_time datetime, @from_lsn binary(10), @to_lsn binary(10) ; 
SET @begin_time = ''',pipeline().parameters.TriggerStartTime,''';
SET @end_time = ''',pipeline().parameters.TriggerEndTime,''';
SET @from_lsn = sys.fn_cdc_map_time_to_lsn(''smallest greater than or equal'', @begin_time);
SET @to_lsn = sys.fn_cdc_map_time_to_lsn(''largest less than or equal'', @end_time);
SELECT count(1) changecount FROM cdc.fn_cdc_get_net_changes_dbo_',item().Table_Name,'(@from_lsn, @to_lsn, ''all'')')

该查询如下所示,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70361100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档