SQL服务器ROWVERSION定义不准确?

Roy*_*mir 2 sql-server rowversion sql-server-2008

来自msdn

每个数据库都有一个计数器,该计数器针对在数据库中包含rowversion列的表执行的每个插入或更新操作递增.

要返回数据库的当前rowversion值,请使用@@ DBTS.

我有一个数据库(相信我只有一个表,没有时间戳/ rowversion字段)

在此输入图像描述

但是当我运行select @@ DBTS时,我得到一个结果,好像我有一个rowversion列:

在此输入图像描述

(ps - 插入/更新 - 不更新此值).

  • 这个价值是多少?

  • 为什么我没有rowversion列就可以拥有它?

Dam*_*ver 6

这个价值是多少?

它是数据库中用于实现rowversion列的计数器的值.

为什么我没有rowversion列就可以拥有它?

您引用的文档说每个数据库都有这样的计数器.然后它声明它将通过对包含rowversion列的表的操作来递增.

它并没有说这个计数器的存在取决于你的数据库中是否有这样的表.


解析为:

A)每个数据库都有一个计数器

B)增加

C)对于每个执行的插入或更新操作

D)在桌子上

E)包含rowversion列

F)数据库内.

(E)和(F)是适用于(D)的条件.(C)表示(D)上的操作导致(B​​)发生.(BF)都不影响(A)的真实性.


还没有文档(我可以找到)表明它应该从0x0000000000000000或任何其他值开始.鉴于此列的唯一目的是允许确定排序(X发生在Y之后或Y之前),返回的实际值应该无关紧要.