没有添加列的SQL Server rowversion

时间:2017-10-30 21:35:09

标签: sql sql-server versioning

通常,为了公开版本数据,您必须添加类型为rowversion的列,但此操作在大型表上需要相当长的时间。无论如何我在开发沙箱环境中做了它,确实花了一段时间,但我也注意到该列填充了一些有意义的初始值。我预计它将全部为0或1表示每一行都处于某种“初始”状态(毕竟,之前没有历史记录),但我看到的是每行的准确值(它们看起来很准确)都是不同的,非默认的值。)

他们来自哪里?无论如何,无论你是否将它暴露在一列中,似乎rowversion都会在幕后跟踪。如果是这样,我可以直接获得它而不添加列吗?就像我可以直接调用某种系统功能一样?我真的想避免停机,我也有大量的现有查询,因此不能选择迁移到不同的表/视图/组合(如其他相关问题所示)。

1 个答案:

答案 0 :(得分:1)

当修改具有rowversion(a.k.a rowversion)值的表时,会生成timestamp值。 rowversion值是数据库范围的,可以通过@@DBTS检索最后生成的值。

由于仅在修改了rowversion表时该值才会增加,因此我认为您无法使用@@DBTS来避免停机。