【问题标题】:SQL Server's Change Tracking and Change Data Capture for a table at the same time同时对表进行 SQL Server 更改跟踪和更改数据捕获
【发布时间】:2019-03-08 05:41:35
【问题描述】:

我想在 SQL Server 2017 (v14.0.3030.27) 的同一个表中添加更改跟踪和更改数据捕获。当我启用变更跟踪时,它运行良好,当我启用变更数据捕获时,它运行良好。

但是,当我在同一个表中同时启用两者时,我没有获得变更数据捕获的值。看不到任何文件这么说。

我的计划是使用变更跟踪来拉取变更,并从变更数据捕获表中获取详细信息。有什么想法吗?

【问题讨论】:

  • CT 和 CDC 有不同的用途。只用一个!要么您需要所有中间更改 (CDC),要么不需要 (CT)。是哪个?
  • 我怀疑你是第一个尝试同时启用两者的人......这通常表明你的设计是错误的!
  • @MitchWheat,你可能是对的,但我的目标是每分钟(如果可能,秒)轮询一个小表,以检查特定表上发生的任何更改,如果是,则从 CDC 获取完整更改.如果您有任何其他设计建议,请告诉我。谢谢
  • @MitchWheat 感谢您的快速回复,我会检查并回复。

标签: sql-server database change-tracking change-data-capture


【解决方案1】:

鉴于您的额外信息“但我的目标是每分钟(如果可能几秒钟)轮询一个小表”,我建议使用 SqlDependency 在数据更改时收到通知,而不是连续轮询。

SqlDependency 非常适合缓存场景,您的 ASP.NET 应用程序或中间层服务需要保留某些信息 缓存在内存中。 SqlDependency 允许您接收通知 当数据库中的原始数据发生变化时,缓存可以 刷新。

要设置依赖,需要关联一个SqlDependency对象 到一个或多个 SqlCommand 对象。要接收通知,您需要 订阅 OnChange 事件。有关更多信息 为通知创建查询的要求,请参阅使用 查询通知。

需要注意的是:

SqlDependency 设计用于 ASP.NET 或中间层 服务器数量相对较少的服务 对数据库活动的依赖项。它不是为使用而设计的 在客户端应用程序中,数百或数千个客户端 计算机将为单个设置 SqlDependency 对象 数据库服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-05
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多