触发器问题!!!
192.168.0.1上,打开企业管理器 -> (local)(Windows NT) -> 安全性 -> 连接服务器 -> 右键 -> 新建连接服务器 -> 常规 -> 连接服务器:Link2 -> 其它数据源 -> Microsoft OLE DB Provider for SQL Server -> 数据源:192.168.0.2(也可用机器名) -> 安全性 -> 用此安全上下文进行 -> 输入远程登录用户名和密码。
然后我在192.168.0.1的A表上做了个触发器,判断如果A表有新记录,则把新记录插入192.168.0.2上的一个表B里(怎么判断是新记录?表A里以前有很多数据。)
但是我测试,insert 一条语句后,就提示出错:
---------------------------
服务器: 消息 8501,级别 16,状态 3,过程 Checks,行 5
服务器 'NMCOVICS-0076 ' 上的 MSDTC 不可用。
这个是什么错误!!?
------------------------------
1,我用触发器的时候怎么能光把新插入的记录拿到B表里?
2,这个错误怎么解决!
Help!!!
------解决方案--------------------create trigger t_test on test
for insert
as
set XACT_ABORT on
--启动远程服务器的MSDTC服务
exec master..xp_cmdshell 'isql /S "xz " /U "sa " /P " " /q "exec master..xp_cmdshell ' 'net start msdtc ' ',no_output " ',no_output
--启动本机的MSDTC服务
exec master..xp_cmdshell 'net start msdtc ',no_output
--进行分布事务处理,如果表用标识列做主键,用下面的方法
BEGIN DISTRIBUTED TRANSACTION
delete from openrowset( 'sqloledb ', 'xz '; 'sa '; ' ',test.dbo.test)
where id in(select id from inserted)
commit tran
go
------解决方案--------------------控制面板-管理工具-服务
将这个DTC服务打开
Distributed Transaction Coordinator
这个服务是进行分布式事务必备的