日期:2014-05-19  浏览次数:20425 次

两个数据库表,使用触发启同步时出现问题?请教高手
1、建立两个数据库服务器的连接;
exec   sp_addlinkedserver   'CQFIRST ', ' ', 'SQLOLEDB ', '192.168.10.77 '
exec   sp_addlinkedsrvlogin   'CQFIRST ', 'false ',null, 'PHSMSG ', 'PHSMSG '
2、建立触发器
--新增同步
create   trigger   tr_insert_PHSMSG   on   sendmsg
for   insert
as
set   xact_abort   on
insert   CQFIRST.PHSMSG.dbo.sendmsg   select   *   from   inserted
go
3、
在两台电脑中,启动   msdtc(分布式事务处理服务),并且设置为自动启动
我的电脑--控制面板--管理工具--服务--右键   Distributed   Transaction   Coordinator--属性--启动--并将启动类型设置为自动启动
---------------------------------------
---------------------------------------
我在数据库sndmsg表中插入数据后,企业管理器报错:
新事务不能登记到指定的事物处理器
该操作位能执行,OLE   DB   提供的程序‘SQLOLEDB’无法启动分布式服务。
---------------------------------------
请教高手我在什么地方处理错误!


------解决方案--------------------
这样试试:

2.触发器
create trigger tr_insert_PHSMSG on sendmsg
for insert
as
set xact_abort on
BEGIN DISTRIBUTED TRANSACTION /*启用分布式事务*/
insert CQFIRST.PHSMSG.dbo.sendmsg select * from inserted
COMMIT
go
3.两台电脑
我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--启动