日期:2014-05-17  浏览次数:20632 次

有关触发器问题
我在数据库服务器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 INSERT
AS 
BEGIN
DELETE FROM [192.168.90.15].YY.dbo.APSCODE
END


然后往APSBUFFER插入一条语句触发触发器
SQL code
INSERT INTO dbo.APSBUFFER
SELECT 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

------解决方案--------------------
跨数据库别用触发器,这种直接用存储过程来做,使用事务来控制。数据库都启用分布式事务处理。