通常,为了公开版本数据,您必须添加类型为rowversion
的列,但此操作在大型表上需要相当长的时间。无论如何我在开发沙箱环境中做了它,确实花了一段时间,但我也注意到该列填充了一些有意义的初始值。我预计它将全部为0或1表示每一行都处于某种“初始”状态(毕竟,之前没有历史记录),但我看到的是每行的准确值(它们看起来很准确)都是不同的,非默认的值。)
他们来自哪里?无论如何,无论你是否将它暴露在一列中,似乎rowversion
都会在幕后跟踪。如果是这样,我可以直接获得它而不添加列吗?就像我可以直接调用某种系统功能一样?我真的想避免停机,我也有大量的现有查询,因此不能选择迁移到不同的表/视图/组合(如其他相关问题所示)。
答案 0 :(得分:1)
当修改具有rowversion
(a.k.a rowversion
)值的表时,会生成timestamp
值。 rowversion
值是数据库范围的,可以通过@@DBTS
检索最后生成的值。
由于仅在修改了rowversion表时该值才会增加,因此我认为您无法使用@@DBTS
来避免停机。