读书人

实现触发器相互同步数据的有关问题

发布时间: 2013-01-11 11:57:35 作者: rapoo

实现触发器相互同步数据的问题
目前我能时间触发器单项同步,下面介绍下我的方法。 俩台服务器利用触发器进行数据同步,现在一台服务器已经做完触发器同步了,经过测试没有任何问题。但现在我想在另一台服务器上也做上触发器同步 当表A有数据更新的时候触发Insert添加到表B里面。 当表B里面有新的更新的时候在触发表B里面的触发器进行添加到表A的相应表里。 现在触发器写完了当更新数据的时候会报错误 其他事务正在使用事务的上下文 有知道这个该怎么设置才能不报错的嘛? 在线等待ing。。。。高手们都来呀。。。
[解决办法]
我担心会不会死循环了喔?

要实现双向数据同步,可以用合并式复制(merge replication)即可.
[解决办法]
这种情况,需要把nested triggers 设置为 0,AFTER 触发器不能级联
[解决办法]
参考以下进行设置.
http://blog.csdn.net/wufeng4552/article/details/4796846
[解决办法]
加上下面两句,否则会提示新事务不能登记到指定事务处理器
set xact_abort on
begin distributed tran
[解决办法]
还需要做的是

启动两台服务器的MSDTC服务
MSDTC服务提供分布式事务服务,如果要在数据库中使用分布式事务,必须在参与的双方服务器启动MSDTC—istributed Transaction Coordinator)服务。

打开双方的135端口
MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。
使用“telnet IP 135”命令测试对方端口是否对外开放。也可用端口扫描软件(比如Advanced Port Scanner)扫描端口以判断端口是否开放
[解决办法]

引用:
目前我能时间触发器单项同步,下面介绍下我的方法。 俩台服务器利用触发器进行数据同步,现在一台服务器已经做完触发器同步了,经过测试没有任何问题。但现在我想在另一台服务器上也做上触发器同步 当表A有数据更新的时候触发Insert添加到表B里面。 当表B里面有新的更新的时候在触发表B里面的触发器进行添加到表A的相应表里。 现在触发器写完了当更新数据的时候会报错误 其他事务正在使用事务的上下文 有……


最好用合式事同步,用器太扯了,跨服器定性都成
[解决办法]
sorry,打错字.

原理上看,用触发器消耗的CPU也不小喔?

复制有很多参数可以配置的,请详细看看.

推荐一个异步传送的新工具: service broker
[解决办法]
引用:
引用:
那可能代码问题,贴出来诊断



Fserver是建立的远程服务器连接 测试没问题


下面是创建触发器的代码
CREATE Trigger TextCF
On Texts
For Insert
As

insert Fserver.CeShi.dbo.Texts(id,Title)
select id,Title……


这触发器效率太低了,操作范围太大

如果时效性要求不是太高,建议改用定时作业,每一定时间执行一次

insert Texts(id,Title)   
select id,Title from Fserver.CeShi.dbo.Texts where id not in(select id from Texts )


读书人网 >SQL Server

热点推荐