我不确定是否有必要。我有一个sql server 2008数据库,其中所有表都有一个时间戳列。是否最好将timestamp数据类型更改为rowversion,以便可以轻松升级到将来的sql server版本?如果是这样,在不重新创建表的情况下将所有时间戳列更改为rowversion的最佳方法是什么?
答案 0 :(得分:3)
您可以随意更改脚本以显示ROWVERSION
而不是TIMESTAMP
,但尝试对表格进行任何更改都没有意义。即使在SQL Server 2012中,虽然他们早已发誓要消除令人困惑的名称,即使你创建了这样一个表:
USE tempdb;
GO
CREATE TABLE dbo.foo
(
bar INT,
rv ROWVERSION
);
目录视图和内部的所有其他内容仍然将其视为TIMESTAMP:
SELECT c.name, [type] = TYPE_NAME(c.system_type_id)
FROM sys.columns AS c
WHERE [object_id] = OBJECT_ID('dbo.foo');
结果:
name type
---- ---------
foo int
rv timestamp
因此,我并不认为您(或任何人)可以做些什么来更好地为未来的版本做好准备 - 微软将在同一条船上拥有 LOT 的客户就像你一样,这可能就是为什么你还没有真正看到这种类型的快速驱逐。他们可能仍然想出真正消除它的计划(除了DATETIME2
恕我直言外,他们在选择名字方面要好得多。
我最好的建议是确保您的脚本和对象都使用ROWVERSION
,这样您就不会感到意外。这可能意味着手动编辑您从Management Studio,目录视图甚至第三方工具生成的脚本。