SQL Server 2000 - 如何为时间戳列插入显式值?

4

我目前正在进行一个项目,需要将数据(经过一些小的转换)从一个数据库传输到另一个数据库。当我遇到第一个时间戳列时,一切顺利的进行中...

似乎SQL Server不想让我使用显式值来填充这种类型的列,它希望生成自己的值。

是否有一种使用T-SQL的方法可以将此数据从一个表传输到另一个表?


1
@Mark 这并不是完全重复,因为使用情况不同。OP想要迁移现有数据,而不仅仅是将任意数据插入时间戳字段。这本身就是一个有效的问题。 - MDCore
3个回答

4
注意:名称“timestamp”已弃用,新的(更准确)名称为“rowversion”。
两个答案:
不可以:SQL Server中的rowversion类型列始终由数据库服务器生成和设置。
可以:如果您在目标表中使用了不同的数据类型,则从rowversion列读取的值可以存储在varbinary列中。因此,您可以在新表中创建一个varbinary列来保存旧表中的值。当然,从现在开始,这个varbinary列将不会像rowversion列一样自动更新。

3

编号

  • 这是一个在数据库层面上独一无二的二进制(8)值
  • 在不同的数据库中,该值没有任何意义
  • 数据库引擎会维护它并相应地递增

我刚刚使用了一个著名的数据比较工具,它可以比较它们但不能进行同步。


0

我不会担心源数据库和目标数据库之间列内容的差异。

我假设你所说的“数据”基本上是实际业务用户需要或想要的东西。

时间戳列(或行版本或其他),是内部控制数据,不应该对业务用户具有任何价值。

它/曾经被用于函数TSEQUALS()中,以确定在读取和更新之间是否更改了行。这是一个快捷方式,可以避免将所有列添加到where子句中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接