【问题标题】:How to capture CDC operation timing when using AWS DMS to migrate SQL Server into AWS S3?使用 AWS DMS 将 SQL Server 迁移到 AWS S3 时如何捕获 CDC 操作时间?
【发布时间】:2019-10-27 13:22:42
【问题描述】:

我想使用 AWS DMS 将本地 SQL Server CDC 迁移到 S3 文件。一切正常,但目标中的 CDC 操作时间。 我有:

    [__$start_lsn]
    ,[__$end_lsn]
    ,[__$seqval]
    ,[__$operation]

在目标中列数据,但与时间无关。 怎么才能有目标中的操作时间?

我知道如果有办法在目标中返回 SQL 函数的结果,我可以调用 sys.fn_cdc_map_lsn_to_time(x.__$start_lsn) 函数,但不知道该怎么做。

本地 SQL Server 版本为:

Microsoft SQL Server 2014 (SP1-CU4)- 12.0.4436.0 (X64) 企业版:Windows NT 6.1(Build 7601:Service Pack 1)(Hypervisor)上基于内核的许可(64 位)

【问题讨论】:

  • 你在寻找类似select sys.fn_cdc_map_lsn_to_time(x.__$start_lsn) from yourTable的东西吗?
  • 是的,为每个 CDC 记录调用此函数,并将结果(更改时间)放在其他列旁边的目标中。
  • 如何在目标中启用这些列?我已启用 CDC,但缺少这些列

标签: sql-server database-migration cdc aws-dms


【解决方案1】:

根据您在评论中对我的澄清问题的回答,我认为这会起作用:

select sys.fn_cdc_map_lsn_to_time(__$start_lsn)
from «some change instance»;

您可以从sys.sp_cdc_help_change_data_capture 系统存储过程中获取«some change instance» 的值。

但是!我猜你想用它来跟踪你的 DMS 操作的进度。我就是这样,我建议稍微更改查询。像这样:

select sys.fn_cdc_map_lsn_to_time(max(__$start_lsn))
from «some change instance»;

也就是说,映射last_lsn的时间而不是全部。狩猎愉快!

【讨论】:

  • 我认为这里有一个误解,我想使用AWS DMS 将所有本地SQL Server 更改自动存储在S3 中。我这样做了,但是在生成的文件中,我没有时间进行该操作(比如说 UPDATE、DELETE、INSERT)。我知道如何在 SQL Server 中获取时间,但我不知道如何自动化此过程以在 S3 中生成的文件中填充时间。
  • 啊。明白了。您想以某种方式用人类可读的时间戳标记文件(可能当前用 LSN 标记)。除了说您可以在您的存储桶上使用解析 LSN 并代表您进行映射的 lambda(或 step)函数之外,我在这里没有为您提供好的解决方案。
  • 是的,这对你有帮助。我会尝试 Lambda。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-07-24
  • 2021-01-16
  • 2021-06-17
  • 2021-07-06
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多