报告架构

时间:2014-08-19 04:12:25

标签: c# sql-server architecture report olap

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

  1. 复杂逻辑
  2. 我们希望将报告移至另一个系统(只发布一些事实,并构建报告)
  3. 因此,我们需要收集有关用户操作的事实。今天我们有一些工作,分析CDC changes。但这种方法存在一些问题:

    1. CDC变更不是我们需要的事实,我们必须做一些操作
    2. CDC变更处理缓慢
    3. 但它有助于我们收集所有操作(甚至由sql更新脚本制作)并且它是异步的(对用户操作性能没有影响)。

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

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

      1. 收集所有更改/事实(甚至由sql脚本制作)
      2. 对用户操作性能影响不大

2 个答案:

答案 0 :(得分:4)

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

Replication, Change Tracking

答案 1 :(得分:0)

您可以使用更改数据捕获(CDC)或日志记录框架,也可以同时使用它们。

您可以将自定义日志记录规则嵌入到业务逻辑层&使用Log4net或任何其他框架,通过应用程序中的日志框架(文本文件,单独的数据库表等)单独记录它们。

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

Auditing triggers in SQL Server Databases

Log Records in SQL Server in Audit tables