SQLSERVER 2000 触发器实现表的实时同步解决方案
测试成功: ? 适用环境 操作系统:windows 2003 数据库:sql server 2000/sql server 2000 ? 一、? 问题现象在sql server 2000下收到如下错误: 该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。 [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ] OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d
?
二、? 解决方案1.??????? 双方启动MSDTC服务MSDTC服务提供分布式事务服务,如果要在数据库中使用分布式事务,必须在参与的双方服务器启动MSDTC(Distributed Transaction Coordinator)服务。 -- 系统服务中Distributed Transaction Coordinator 服务启动; --?在任务管理器中 MSDTC.EXE 正在运行; 2.??????? 检测双方135端口是否打开,防火墙是否允许MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。?? ? 使用“telnet IP
3.??????? 双方MSDTC设置打开“管理工具――组件服务”,以此打开“组件服务――计算机”,在“我的电脑”上点击右键。在MSDTC选项卡中,点击“安全配置”按钮。 在安全配置窗口中做如下设置: l?/??????? 选中“网络DTC访问” l??/?????? 在客户端管理中选中“允许远程客户端”“允许远程管理” l???/????? 在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证” l????/???? 保证DTC登陆账户为:NT?? Authority/NetworkService ? ?
? 4. 源数据库表定义触发器如下: ? ---- 假设:在两台服务器上有相同的表:test.dbo.test;登陆:sa/sa ? set? XACT_ABORT on
? --启动本机的MSDTC服务 ? --进行分布事务处理,如果表用标识列做主键,用下面的方法
commit trango (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |