问题标签 [change-data-capture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1230 浏览

sql-server - T-SQL - 使用 CDC 或 Replication 同步表

想象以下场景。我对 2 个带有一些内部连接的表有 2 个 T-SQL 查询。我需要在 24 小时内运行这些查询并将查询结果与其他两个表同步(仅更改行)。

我的问题是:什么技术更适合变更数据捕获或复制?

感谢您的所有建议。

0 投票
5 回答
1330 浏览

sql - sql server 中的 CDC

我在我的一个数据库上启用了 CDC 功能。现在我在 cdc 表中有下表数据

现在我的问题是我必须查询 cdc 表并获取所有成员的最新行(最近更新的值)。例如查询将返回

0 投票
0 回答
147 浏览

sql-server - 使用 Change Data Capture 跟踪 FileStream 数据

我需要一个数据库

  • 管理具有事务支持的文档和
  • 可以将一行和相应文档的状态恢复到更早的时间点。

我倾向于使用 SQL Server FileStream 功能,因为它似乎完全符合我的大部分要求。

对于数据历史,SQL Server 解决方案似乎是变更数据捕获 (CDC) 功能。

  1. 这是否与 SQL Server 2012 上的 FileStream 结合使用?是否会跟踪通过 Win32 SqlFileStream 类所做的文档更改?我可以通过这种方式恢复我的文档的旧状态吗?
  2. 如果不是,那么跟踪文档更改以及存储在相应列中的元数据的推荐解决方案是什么?触发器?
0 投票
0 回答
153 浏览

sql - 我想跟踪我的 sql 数据更改

我想跟踪执行特定存储过程(如SP_Integration.

SP_Integration确实在许多表中更新。我想跟踪模式集成期间的更改,例如:

如果我使用触发器,它会在SP_Integration. 我想在这个存储过程执行时跟踪值的变化。

0 投票
1 回答
386 浏览

sql-server - SQL 依赖与变更数据捕获 (CDC)

我正在使用 CDC 进行数据库更改通知。
但有些人建议不要使用 CDC。
我发现了另一个选项 SQL Dependency。
SQL Dependency 和 CDC 中哪一个是更好的选择?

0 投票
1 回答
197 浏览

sql-server - 准确更新 SQL Server 中的 LastUpdatedOn datetime2 列

LastUpdatedOn datetime2每次更新 SQL Server 表中的行时,我都想更新列。为此,我正在考虑使用After Update触发器设置LastUpdatedOnsysutcdatetime(). 此触发器还负责检测列更改并将旧值保存到历史表中。我的问题是,触发器方法会保存更新行时间的准确表示吗?实际更新与After Update触发更新之间是否存在时间延迟LastUpdatedOn

此外,阅读http://technet.microsoft.com/en-us/library/bb630387.aspx,看起来GetSystemTimeAsFileTime()跨多个服务器可能不准确。在具有大量并发写入的分片数据库架构中,检测事件时间的最可靠方法是什么,以便我知道整个集群中的事件顺序是正确的?

PS 我考虑过使用Change Data Capture,但它在 SQL Azure 中不可用。

0 投票
2 回答
3235 浏览

sql-server - 更改数据捕获 - _$start_lsn - 解释此值

当我查看我们的一个 CDC 表时,我看到表中有四行 __$start_lsn 值为0x000CB13700041C06001B.

我的问题是这个。当 SQL Server 将包含此 lsn 的四行写入 CDC 表时,它是否仅写入了将具有此 lsn 的四行,或者下一个事务可能包含更多具有相同 lsn 的行?

或者,换一种说法,当我查看或查询特定 LSN 的 CDC 表时,我能否确定将来我不会看到更多具有相同 LSN 的行?

0 投票
0 回答
1397 浏览

hadoop - Hadoop 上的变更数据捕获

我需要将现有的基于 Oracle 的 CDC 系统迁移到 Hadoop。有人在 Hadoop 上实现了 CDC 吗?请分享 CDC on Hadoop 的方法。谢谢!

0 投票
1 回答
12898 浏览

sql-server - CDC 已启用,但 cdc.dbo_CT 表未填充

我已使用以下步骤启用 CDC:

我可以看到在System Tables中创建了一个 CT 表;SQL Server 代理已打开,我可以看到cdc.db_name_capture作业已创建并正在运行。

但是,即使正在填充table_name表,我在 CT 表中也看不到任何内容。我在正在更新的同一个数据库中有为它们启用了 CDC 的其他表,以及 CDC正在为它们捕获数据并将其存储在为该特定表创建的 CT 表中。

为什么即使其他表在捕获数据,这个表也不会捕获数据?

我在网上读到这可能与事务日志变得太大有关,但我仍然有足够的驱动器空间(约 2TB 可用)。

我可以做些什么来调试这个问题?

非常感谢,提前!:)

编辑 1

这是 的输出exec sys.sp_cdc_help_change_data_capturesubscription_events是我遇到问题的表。

在此处输入图像描述

编辑 2

这是 的输出exec sys.sp_cdc_help_jobs;

在此处输入图像描述

编辑 3

这是 的输出select * from sys.dm_cdc_log_scan_sessions;

在此处输入图像描述

这是输出select * from sys.dm_cdc_errors;

在此处输入图像描述

编辑 4

运行select serverproperty('productversion')提供以下版本号:11.0.3401.0.

0 投票
1 回答
3236 浏览

sql-server - SSIS 和 CDC -“标记已处理范围”结束时的状态不正确

问题

我目前在名为subscription_events的表上运行 CDC 。相应的 CT 表正在填充新的插入、更新和删除。

我有两个 SSIS 流,它们将数据从订阅事件移动到不同数据库中的另一个表中。第一个流程是初始流程,具有以下布局:

在此处输入图像描述

Import Rows Into Vertica步骤只包含一个源和一个目标,并将每一行复制到另一个表中。请注意,源表当前处于活动状态,并且每隔几分钟就会有新行流入。标记初始加载开始/结束步骤将当前状态存储在一个变量中,该变量存储在一个单独的表中,用于存储 CDC 名称和状态。

第二个流程是增量流程,具有以下布局:

在此处输入图像描述

行导入 Vertica步骤使用 CDC 源,应该从 CT 表中提取最新的插入、更新和删除,并且这些应该应用到目标。这就是问题所在;我从未从 CDC 源收到任何信息,即使订阅事件表中插入了新行,并且相应的 CT 表的大小随着新的更改数据而增长。

据我了解,事情应该是这样的:

  1. 标记初始加载开始
    1. CDC 状态应为ILSTART
  2. 数据流
  3. 标记初始加载结束
    1. CDC 状态应为ILEND
  4. 获取处理范围(首次运行)
    1. CDC 状态应该是ILUPDATE
  5. 数据流
  6. 标记处理范围(首次运行)
    1. CDC 状态应该是TFEND
  7. 获取处理范围(后续运行)
    1. CDC 状态应为TFSTART
  8. 数据流
  9. 标记处理范围(后续运行)
    1. CDC 状态应该是TFEND
  10. 重复最后三个步骤

不过,这不是我的 CDC 状态的设置方式……这是我在同一过程中的状态。

  1. 标记初始加载开始
    1. CDC 状态为ILSTART
  2. 数据流
  3. 标记初始加载结束
    1. CDC 状态为ILEND
  4. 获取处理范围(首次运行)
    1. CDC 状态为ILUPDATE
  5. 数据流
  6. 标记处理范围(首次运行)
    1. CDC 状态为ILEND
  7. 获取处理范围(后续运行)
    1. CDC 状态为ILUPDATE
  8. 数据流
  9. 标记处理范围(后续运行)
    1. CDC 状态为ILEND
  10. 重复最后三个步骤

我永远无法摆脱ILUPDATE/ILEND循环,因此我永远无法从 CT 表中获取任何新数据。为什么会发生这种情况,我能做些什么来解决这个问题?

非常感谢您的帮助!:)

编辑 1

这里有几篇描述我的情况的文章虽然不完全。他们也没有帮助我解决这个问题,但它可能会帮助你想到一些我可以尝试的东西。

第二篇文章包括这张图片,它显示了我陷入的ILUPDATE/ILEND循环。

在此处输入图像描述

编辑 2

上周(2014 年 5 月 26 日)我在subscription_events表上禁用然后重新启用了 CDC。这并没有改变任何东西,所以我在整个数据库上禁用了 CDC,在数据库上重新启用了 CDC,然后在subscription_events表上启用了 CDC。这确实使 CDC 工作了几天(我认为通过这个过程已经解决了问题)。但是,在上周末(2014 年 5 月 30 日)我需要通过这个过程重新加载整个表,我又遇到了同样的问题。我仍然被困在这个循环中,我不确定为什么或如何摆脱它。

编辑 3

在我遇到这个问题之前,我有一个单独的问题,我在这里发布了:

CDC 已启用,但未填充 cdc.dbo<table-name>_CT 表

我不确定这些是否相关,但认为提供它并没有什么坏处。