有没有比日期更好的方法来关联两个数据库的状态?

时间:2012-07-31 02:32:30

标签: sql sql-server concurrency

我有一种情况需要在同一段时间内从两个不同的SQL Server数据库中获取一系列对象。

因此,如果DB1有一个Car表,并且DB2有一个Person表,那么我想让所有CarsPersons达到某个时间点{{ 1}}。

但是,我不想处理日期(我不想遇到闰秒问题和那种事情),幸运的是两个数据库都使用t列。理想情况下,我想使用像RowVersion这样的东西作为表示时间点/特定全局状态的并发标记(我的RowVersion),然后我可以将记录与之比较。

不幸的是,t列与数据库相关,因此在不同数据库之间无法比较。

这里有更好的解决方案吗?我是否反应过于不想使用日期?

建议赞赏: - )

2 个答案:

答案 0 :(得分:1)

因为您正在谈论多个独立的系统,所以您的选择很不幸。通过将所有日期时间存储在GMT中,您已经开始在正确的位置。

除此之外,datetime实际上是这里唯一适用的数据类型。是的,假设一个良好的,共同的时间同步,它将在多个系统之间关闭,只需几分之一秒。但是,即使时钟完全同步,更新记录时的简单网络延迟也会导致时间差异。

RowVersion无法帮助您,因为您已经注意到了。

唯一的另一种方法是在一个或另一个数据库中有一个'sync'表,它与任一数据库中的记录相关(逻辑上,不是“物理上”),并且具有可以使用的公共日期时间或行转换。这会增加查询的复杂性,但无论如何,您似乎已经在进行跨数据库查询。

答案 1 :(得分:0)

您是否有特定的时间段?如果是这样,也许一个共同的“TimePeriod”表可以链接到每个记录而不必处理日期?