首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库历史记录

数据库历史记录
EN

Stack Overflow用户
提问于 2012-01-25 07:39:31
回答 2查看 466关注 0票数 2

要系统化记录对哪些表所做的更改的方法,最有效的方法是什么?例如,我的数据库模式中大约有10-12个表,其中一个表通过连接大约7-8个表来显示记录。如何同步不同用户在同一记录或不同记录上所做的更改。

方法A:通过行激活器/去激活器标志。在更新记录时设置停用标志,这将停用该行,并在激活器标志打开的情况下插入新记录。

方法B:为每个表维护一个单独的数据库历史表,该表将存储数据wrt到时间戳。

假设:记录将频繁更新。期望的记录总数不应超过1000行。

您可能想要提出其他方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-25 07:54:42

我认为答案在于这样一个问题:“您需要查看特定记录的历史记录的频率是多少?原因是什么?

如果您偶尔需要这样做,以研究谁做了什么,以及何时或为了审计腐败,可以使用审计表方法,该方法通过每次数据更改时的触发器填充。或者使用变更跟踪,如果它对你有效的话(坦率地说,我们发现它不够好,不适合审计)。例如,还可以成功地使用更改跟踪来查看自上次数据导入以来记录是否已更改。请注意,更改跟踪数据不是永久性的,除非您以物理方式将其复制到另一个表中。

如果您需要频繁地显示整个历史记录,则将其全部保存在一个表中,并使用一个通过触发器维护的活动标志。创建一个视图,该视图仅包含活动记录,供开发人员在只想查看最新数据时使用。如果您正在对以前未存储历史的现有数据库执行此操作,则重命名该表,并将视图命名为与原表相同的表,这样就不会发生任何中断。

如果我需要用于报告的历史数据,而不是应用程序的其余部分,我还会考虑使用单独的历史表。举个例子,因为我们需要知道销售代表正在交谈的目标在联系发生时是否真的是高价值目标,因为这个计算是如何衡量销售代表绩效的一部分。显然,我们需要历史记录,但实际上每个月只需要一次。因此,每天降低性能以保持在同一个表中可能不是最好的解决方案。这可能有助于将耗时的报告从日常工作中分离出来,并且通常有助于提高性能。

票数 1
EN

Stack Overflow用户

发布于 2012-01-25 07:46:25

更改跟踪:http://msdn.microsoft.com/en-us/library/cc305322.aspx

变更数据捕获:http://msdn.microsoft.com/en-us/library/cc645937.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8995932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档