CREATE TRIGGER send_to_oracle  ON dbo.hot_metal_analysis 
FOR UPDATE
AS
BEGIN
INSERT INTO OPENQUERY(BFSERVER,'SELECT * FROM DBBF.D3DATA1') 
SELECT SAMPLETAKENTIME,NULL,SUBSTRING(SAMPLECODE,5,5),SUBSTRING(SAMPLECODE,13,3),ANA_C,ANA_Si,ANA_Mn,ANA_P,ANA_S,ANA_Ti 
FROM INSERTED
END主要错误有1、“其他用户已经修改了该表的内容。您正在修改的数据库行在数据库中不存在”
2、“ MSASQL 无法启动分布式事务”
3、SET ANSI_NULLS ON   SET ANSI_WARNINGS ON
问题3可以把触发器中几句话写在存储过程中解决,而问题1、2一直存在链接服务器设置妥当,链接服务器数据源只有采用
MS OLE DB Provider for ODBC Driver,才能在查询分析器中可对ORALCE表进行操作
ORALCE数据库使用2000SRV,MSDTC已经启动
SQL数据库(本地)使用2003SRV,MSDTC也启动,并按相关设置好,两端可以PING通HOSTNAME相关资料昨晚也找了些,不过问题还是没解决。
如果这种在SQL表中触发器同步更新ORACLE表的方式行不通,有别的方法更新么?
谢谢了

解决方案 »

  1.   

    SQL Server和Oracle之间好像不能启动事务吧!在本版出现的问题里,还没有发现在SQL Server触发器中访问Oracle使用事务成功的先例。关注中...
      

  2.   

    下午弄了一下午,还是没成功,ORACLE9版本的。
    只有用MS OLE DB Provider for ODBC Driver才勉强链接成功
    不过还可以在查询分析器里面“插入”执行语句那我只有在客户端的UPDATECOMMAMD.TEXT里面加上查询分析器里面的“插入ORACLE的语句”了。
    本版的确类似的问题很多,不过最终都没有完整的答复,也不知道他们采用何种补救方案
    采用分布式事务处理,版本限制太多,不过肯定有成功的先例的望赐教
      

  3.   

    最后只有采用折中的方案,采用作业的方式,每分钟执行一次写入ORACLE数据库的操作,虽然作业也要求分布式事务处理,但也可以不用,自己在语句检测错误算了,呵呵。至少比在程序里面写好多了