【问题标题】:SQL Server Temporal Table Creating Duplicate RecordsSQL Server 时态表创建重复记录
【发布时间】:2017-11-02 20:47:24
【问题描述】:

我在我们的一个经常更新的生产表上实现了一个系统版本化(临时)表。此表由应用程序、高级用户(使用自定义脚本和标准化存储过程手动)和系统作业更新。

我刚刚遇到了一种情况,我看到一条新记录插入到历史记录表中,但它看起来与之前的记录完全相同。当我对此进行研究时,我发现这不是一次性的情况。还有很多。请记住,开始和结束日期不重复。上一条记录的结束日期与下一条记录的开始日期一致,所有其他数据完全相同。

如果可能的话,我想防止这种情况发生,但首先我需要知道这是从哪里来的。

有人遇到过这种情况吗?有没有人足够了解临时表,可以给我一些潜在的线索,说明什么会触发插入历史表而不对数据进行可见的更改?是否可以在不更改用户可见字段的情况下更改记录?

提前致谢。

【问题讨论】:

  • 我很确定表的更新实际上并没有改变数据但仍然设置它(即更新表集字段1 = 字段1)将导致历史表中的新条目。如果你能进入开发环境,给它一个测试
  • 好了!那确实做到了。也有道理。感谢您的帮助!
  • 把评论变成答案,供其他人日后参考。
  • @Adam - 你能确认第十二个发现吗?我有同样的问题,似乎更新语句具有相同的值(设置 field1=field1)

标签: sql sql-server sql-server-2016 temporal-tables


【解决方案1】:

我很确定表的更新实际上并没有改变数据但仍然设置它(即更新表集字段1 = 字段1)将导致历史表中的新条目。

我猜它是由“高级用户”脚本引起的(从我的历史来看,这往往是第一大混乱代码来源),尽管应用程序也可能对此负责。可能在“代码审计”时间范围内,以找出更新来自何处。

【讨论】:

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