代码之家  ›  专栏  ›  技术社区  ›  alextansc

在SQL Server 2005中,如何跟踪订阅服务器的复制行时间?

  •  3
  • alextansc  · 技术社区  · 18 年前


    订阅服务器已使用事务复制成功地从发布服务器复制了一行。现在,我们如何跟踪最后一次成功复制此行的时间?

    一位朋友提出了以下解决方案,他将其用于SQL Server 2000:

    2) 更改复制存储过程以更新日期时间列(!)。

    步骤#2在我心中引发了各种各样的警告,因此在我详细介绍他的解决方案之前,我想问问在这种情况下是否有更好的SQL Server 2005解决方案。

    4 回复  |  直到 18 年前
        1
  •  1
  •   Dale    17 年前

    几周前,我在寻找最近发生变化的记录时遇到了这个问题。

    如果你需要最后一个 复制 更新时,事情可能会变得有点棘手,您需要使用触发器和存储的进程来解决问题。

    http://www.sqlteam.com/article/timestamps-vs-datetime-data-types

    希望有帮助~

        2
  •  0
  •   Luk    18 年前

    我会照你朋友的建议去做。这样,只有对复制过程的调用才会更新时间戳。

    这种方法的问题是需要一个写锁,但我看不到任何其他实用的方法。

    否则,您可以使用在获取行时触发的触发器(不要引用我的话,我很少使用触发器),但这似乎不对(您可能会以误报结束)

        3
  •  0
  •   Philippe Grondier    18 年前

    如果您正在处理事务性复制,为什么不直接记录主数据更新的时间,并将其复制到下一个复制作业的其他数据库中?

        4
  •  0
  •   alextansc    18 年前

    不管怎样,我已经测试了我朋友的方法,它很好地满足了我们的要求。

    如果有人也想这样做,这里有一个重要的提示:在初始化订阅和将来的模式更改时要小心。

    就我而言,我们决定 initialize the snapshot manually 以便在订阅服务器数据库中保留添加的datetime列。另一种可能的方法是允许初始化,但修改现有存储过程以忽略复制添加的datetime列。

    推荐文章