触发器+链接
我的需求:实时监视数据库其中一张表的插入和更新操作,同步到另外一台服务器的同名表中。
在网上找了点资料,最后确定用触发器+链接外服务器的方法。现在有个问题,我是用OPENROWSET链接插入、更新操作的。语句在查询窗口能执行,单独写个存储过程也能执行,就是写到触发器中无法执行,提示链接服务器没有启用分布式事务,莫名其妙,同一语句明明在查询窗口和存储过程都能执行的,应该不是服务器设置问题吧。
由于是小白,特来麻烦各位大侠点化点化一下,谢谢!
------解决方案-------------------- 你用存储过程不行吗? 加SQL作业!
------解决方案-------------------- 创建链接服务器无法使用事务,触发器会启用一个事务,建议楼主使用同步复制技术。
http://topic.csdn.net/u/20080523/11/08e4624a-13d1-4a6c-a9bc-7cfdd721a351.html
------解决方案-------------------- 要先开始一个分布式事务
BEGIN DISTRIBUTED TRANSACTION;
------解决方案-------------------- SQL code
exec sp_addlinkedserver ...
exec sp_addlinkedsrvlogin ...
------解决方案-------------------- 链接服务器需要启用远程分页式服务远程连上去,或者telnet登陆上去 然后运行net start msdtc命令
------解决方案-------------------- http://topic.csdn.net/u/20081231/10/624c68b9-e9b6-4c01-910f-c116bdd14c63.html?2546
------解决方案-------------------- http://topic.csdn.net/t/20050105/09/3699836.html
------解决方案-------------------- 探讨 引用: http://topic.csdn.net/u/20081231/10/624c68b9-e9b6-4c01-910f-c116bdd14c63.html?2546 谢谢你给的链接。我是想问问,我这个需求,照这个触发器思路能不能事先。如果可以的话,应该是某个基础知识我不懂,照成其他地方能执行,触发器无法执行。感谢指点。
------解决方案-------------------- 建议LZ在问问题的时候去看下以前的帖子。
------解决方案-------------------- SET ANSI_WARNINGS ON SET ANSI_NULLS ON SET XACT_ABORT ON ---执行更新 SET XACT_ABORT OFF
------解决方案-------------------- SET ANSI_WARNINGS ON SET ANSI_NULLS ON SET XACT_ABORT ON ---执行更新(不用OPENROWSET试试) update 链接服务器名.数据库名.dbo.table_name where ........ SET XACT_ABORT OFF
------解决方案-------------------- -- 你就启用一下服务器的分布式事务呗! http://topic.csdn.net/u/20100610/17/66fadf93-b284-403b-af27-cae49fdbd840.html
------解决方案-------------------- Mark下 建议: 1、在本地加表 2、本地加触发器,写入本地新加表 3、加存储过程,实现将本地新加表数据更新到远程,并删除本地数据 4、加作业,定时调用3建立的存储过程