代码之家  ›  专栏  ›  技术社区  ›  Backs

报告的体系结构

  •  3
  • Backs  · 技术社区  · 10 年前

    我们需要在系统中构建报告。我们无法在表上在线构建它们,原因有两个:

    1. 复杂的逻辑
    2. 我们希望将报告转移到另一个系统(只需发布一些事实,他们就可以构建报告)

    因此,我们需要收集有关用户行为的事实。今天我们有一些工作,分析 CDC changes 。但这种方法存在一些问题:

    1. 疾控中心的变化不是我们需要的事实,我们必须采取一些行动
    2. CDC变更处理缓慢

    但它有助于我们收集 全部的 操作(甚至由sql更新脚本执行),并且它是异步的(对用户操作性能没有影响)。

    另一种方法——在业务逻辑层上收集事实,并将其发送到另一个系统或保存到表中。但它是同步操作的,并且很难收集sql脚本生成的事实。

    那么,最佳的方法是什么? 要求:

    1. 收集所有更改/事实(甚至由sql脚本进行)
    2. 对用户操作性能影响不大
    2 回复  |  直到 10 年前
        1
  •  4
  •   nshah    10 年前

    我假设您不想从TransactionServer报告。因此,您可能需要通过复制(合并或事务复制)设置报告服务器。

    Replication, Change Tracking

        2
  •  0
  •   Community CDub    8 年前

    您可以使用变更数据捕获(CDC)或日志框架,也可以同时使用两者。

    您可以将自定义日志记录规则嵌入业务逻辑层&使用 Log4net 或任何其他框架。

    理想情况下,如果将此日志写入单独的数据库,则可以生成各种自定义报告。如果您需要记录每个数据库活动,您可以设置更改数据捕获或使用SQL触发器仅捕获某些事件(这需要在设置和测试中进行大量工作)。我找到的一些有用的链接是

    Auditing triggers in SQL Server Databases

    Log Records in SQL Server in Audit tables