我不确定是否有必要。我有一个 sql server 2008 数据库,其中所有表都有一个时间戳列。是否最好将时间戳数据类型更改为 rowversion,以便可以轻松升级到未来的 sql server 版本?如果是这样,在不重新创建表的情况下将所有时间戳列更改为 rowversion 的最佳方法是什么?
问问题
2545 次
1 回答
3
随意将脚本更改为 showROWVERSION
而不是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
所以我真的不认为你(或任何人)可以做任何事情来更好地为未来的版本做好准备 - 微软将有很多客户和你在同一条船上,这可能就是你实际上没有的原因看到了快速驱逐的类型。他们可能仍在提出真正消除它的计划(而且他们在选择名称方面做得更好,DATETIME2
恕我直言除外)。
我最好的建议是确保您的脚本和对象都使用ROWVERSION
,这样您就不会感到意外。这可能意味着手动编辑您从 Management Studio、目录视图甚至第三方工具生成的脚本。
于 2012-04-27T13:03:55.253 回答