Tsql T-SQL";时间戳;覆盖“;rowversion";数据类型列
我使用的是Mistrosoft SQL Server 2012,因为在本文中: 不推荐使用时间戳语法。此功能将在以后的操作中删除 Microsoft SQL Server的未来版本。避免在中使用此功能 新的开发工作,并计划修改当前 使用此功能 我决定使用“rowversion”列而不是“timestamp”列。因此,我创建了下表:Tsql T-SQL";时间戳;覆盖“;rowversion";数据类型列,tsql,timestamp,sql-server-2012,rowversion,Tsql,Timestamp,Sql Server 2012,Rowversion,我使用的是Mistrosoft SQL Server 2012,因为在本文中: 不推荐使用时间戳语法。此功能将在以后的操作中删除 Microsoft SQL Server的未来版本。避免在中使用此功能 新的开发工作,并计划修改当前 使用此功能 我决定使用“rowversion”列而不是“timestamp”列。因此,我创建了下表: CREATE TABLE [dbo].[TestTable] ( [Col001] [INT] NOT NULL ,[Col002] [CHAR](
CREATE TABLE [dbo].[TestTable]
(
[Col001] [INT] NOT NULL
,[Col002] [CHAR](2) NOT NULL
...
,[Col00N] [DATETIME2] NOT NULL
,[RowVersionID] [ROWVERSION] NOT NULL
,CONSTRAINT [PK_ProtoSurveyGlobalizationChanges_RowVersionID] PRIMARY KEY CLUSTERED
(
[RowVersionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
一切看起来都很正常,直到我按下了“ALT+F1”组合键,它为我提供了有关表的信息(如列的详细信息),并且我看到“RowVersionID”列带有类型“timestamp”的标记
我的下一个想法是使用SQL Server Management Studio 2012“删除并创建我的表”,而“生成的SQL”更改了我的原始查询,如下所示:
[RowVersionID] [timestamp] NOT NULL
为什么服务器没有使用我最初设置的类型,为什么在文章中建议我不要使用“时间戳”,而是服务器选择了它?它们是同义词,服务器无法分辨(一旦创建了表)您实际使用了哪个词来创建表
显然,在深层的某个地方,
timestamp
被弃用的消息还没有传到负责编写SQL Server脚本组件的人那里-因此脚本仍然说timestamp
rowversion
是timestamp
。它们是一样的
时间戳是rowversion数据类型的同义词,是主语
数据类型同义词的行为。在DDL语句中,使用
尽可能使用行版本而不是时间戳
它被重命名是因为时间戳
不符合ISO标准。因为人们很少会错误地认为时间戳可以代表实际的日期时间点
只需将其声明为
rowversion
<代码>时间戳已弃用,可能会在以后删除 rowversion是一个时间戳。它被重命名,因为时间戳不符合ISO标准。所以,如果我指定了“rowversion”或“timestamp”,那就没有什么区别了?服务器正在为我使用正确的?只有一个。timnestamp已被弃用,可能稍后会被删除。这显然是Smo中的一个bug。它不应生成不推荐使用的数据类型。请使用Connect提交错误。SQL Server开发者工具的主要组程序经理过去是Gert Drapers,尽管LinkedIn说他现在在Xbox Live上工作。@JohnZabroski使用Connect
?我不会浪费时间:-)你可以自己填写错误报告,并让我们知道何时/是否已修复。+1特别是对于“深处的某个地方,关于…”的新闻:)是的,我知道,但我担心的是我正在使用“rowversion”,但SQL Server似乎不理解或表示,那么当“时间戳”被移除时会发生什么呢。此外,文章甚至建议重写使用“时间戳”的语句。