SQL Azure中的rowversion

时间:2012-06-17 17:32:47

标签: sql-server sql-server-2008 azure-sql-database

我正在研究SQL Azure数据库。

我想在我的数据库中的表中添加一个rowversion列,但我找不到类型“rowversion”!

它是“时间戳”类型吗?如果是这样 !我已经读过时间戳已被弃用。

谢谢,

2 个答案:

答案 0 :(得分:2)

仅弃用名称 timestamp,因为对于代表rowversion数据类型的名称来说,这是一个可怕的选择 - 因为它与日期无关或时间(如果基于ANSI中指定的内容,则应如此)。 timestamprowversion类型100%兼容且可互换。

虽然名称已被弃用,但您也可以继续使用它。即使在SQL Server 2012中,rowversion中的sys.types也不在rowversion,如果您使用sys.columns创建表格,则会将timestamp存储为CREATE TABLE dbo.what_the(heck ROWVERSION); SELECT t.name FROM sys.types AS t INNER JOIN sys.columns AS c ON t.system_type_id = c.system_type_id OR t.user_type_id = c.user_type_id WHERE c.[object_id] = OBJECT_ID('dbo.what_the'); 并获取如果稍后生成表的脚本,则将脚本编写为后者。

name
---------
timestamp

结果:

rowversion

这是一个小小的舌头,你绝对应该使用timestamp而不是timestamp以用于将来的兼容性原因,我只是戳了一点乐趣,因为微软再一次“做我们做说,不像我们做的那样“弃用政策。在SQL Azure的情况下,您可能必须立即选择<shrug>,直到他们对此进行排序 - 对我来说似乎有点短视,他们会继续使用旧名称,因为它继续引起如此多的混乱那里。 rowversion

P.S。你在哪里看到这个?在基于Web的SQL Azure表设计器中?我怀疑如果您使用查询编辑器来创建表,则可以使用timestamp或{{1}},而不是将自己限制在表设计器UI的下拉列表中显示给您的列表。

答案 1 :(得分:0)

他们是一回事。 Rowversion是“后期”版本 - 不推荐使用时间戳,因为它与时间戳的标准SQL规范不匹配。

如果您的数据库中没有rowversion,请使用时间戳。

http://msdn.microsoft.com/en-us/library/ms182776.aspx