首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server 2005/8复制事务ID

SQL Server 2005/8复制事务ID
EN

Stack Overflow用户
提问于 2009-11-13 20:13:14
回答 1查看 280关注 0票数 0

我有一个使用事务复制将多个SQL Server 2005数据库(相同实例)复制到单个远程数据库(不同物理计算机上的不同实例)的方案。

然后,我正在对复制的数据执行一些处理,以便进行报告。我使用表级触发器来识别对我的后处理代码执行哪些操作的更改。

到目前为止,一切都很好。

但是,我想知道的是,在同一事务中创建、更新或删除某些表的位置,是否可以从复制(或任何地方)中识别出某种事务ID,这样我就不会对单个事务多次执行相同的后期处理。

基本示例:我有一个TUser表和一个TAddress表。如果我在单个事务中创建这两者,那么它们也会在单个事务中复制。但是,在复制的数据库中会触发两个触发器-这会导致我的后处理代码运行两次。我真正想要确定的是,这两个更改是在同一事务中复制的。

这有没有可能呢?我所描述的标识符是否存在,它是否可访问?

EN

回答 1

Stack Overflow用户

发布于 2009-11-13 21:54:24

简而言之,答案是否定的,没有任何你可以依赖的东西。总而言之,很长的答案是它是存在的,但它不会以任何方式被推荐用于任何事情。

鉴于复制在事务上是一致的,您可以考虑的一种方法是将主记录(在本例中为TUser,因为TAddress与TUser相关)的标识符压入队列(使用类似Service Broker的内容),然后通过从队列中弹出数据并单独处理来执行后处理。

另一种可能是通过从主表中轮询新的/更新的记录并以这种方式进行后处理,每'x‘个时间量进行一次批处理-您需要跟踪id、行版本或某种类型的时间戳,将每个主表作为元数据处理,并在每次批处理运行期间拉出任何尚未处理的内容。

只是一些想法,希望能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1728865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档