首页 新闻 会员 周边 捐助

其他会话正在使用事务的上下文。

0
悬赏园豆:20 [已解决问题] 解决于 2012-07-10 14:30

两个不同服务器上有两个相同的数据库,我想让某个表同步,这样我就做了两个触发器,现在就总是跳“其他会话正在使用事务的上下文。”这个问题,谁有解啊

I是初学者的主页 I是初学者 | 初学一级 | 园豆:97
提问于:2012-07-01 22:12
< >
分享
最佳答案
0

看你的意思 好像是两个数据库中都有相同的表(假设叫 A1, A2), 然后每个表都有Insert Trigger, 这样向其中一个表 A1插入数据, 这个表的trigger会被触发 然后向 A2 插数据, 而同时A2 的触发器也被触发, 它会试图向A1再插入

形成了trigger loop

网上的解决办法  在两个trigger中都加入 条件判断, 如果发现已经在trigger context 中 就不做任何操作 

CREATE TRIGGER tr_Table1_INSERT
ON Table1
FOR UPDATE AS

DECLARE @ctx VARBINARY(128) 
SELECT @ctx = CONTEXT_INFO() 
IF @ctx = 0xFF
    RETURN

SET @ctx = 0xFF

-- Trigger logic goes here

 

收获园豆:20
gunsmoke | 老鸟四级 |园豆:3592 | 2012-07-05 13:24
其他回答(1)
0

同步不一定用触发器,也可以用异步。
http://www.cnblogs.com/downmoon/archive/2012/04/09/2439462.html

邀月 | 园豆:25475 (高人七级) | 2012-07-01 22:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册