有关触发器问题
我在数据库服务器192.168.90.12的数据库EAP上可以顺利执行下面的语句
- SQL code
DELETE FROM [192.168.90.15].YY.dbo.APSCODE
我在数据库服务器192.168.90.12的数据库EAP上创建触发器
- SQL code
CREATE TRIGGER [dbo].[TrigAPSBUFFER]ON [dbo].[APSBUFFER]AFTER INSERTAS BEGINDELETE FROM [192.168.90.15].YY.dbo.APSCODEEND
然后往APSBUFFER插入一条语句触发触发器
- SQL code
INSERT INTO dbo.APSBUFFERSELECT replace(CONVERT(varchar(100), GETDATE(), 20),'-','/')
提示错误:
链接服务器"192.168.90.15"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持。"。
消息 7391,级别 16,状态 2,过程 TrigAPSBUFFER,第 10 行
无法执行该操作,因为链接服务器 "192.168.90.15" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。
[解决办法]
- SQL code
sp_configure 'show advanced options', 1 GO RECONFIGURE GO sp_configure 'Ad Hoc Distributed Queries', 1 GO RECONFIGURE GO
[解决办法]
跨数据库别用触发器,这种直接用存储过程来做,使用事务来控制。数据库都启用分布式事务处理。