触发器的一个问题
想做一个触发器,用来同步数据。
环境如下:
A机器:win2003 B机器:win2003 数据库都是SQL SERVER 2000企业版
系统版本都是SP2
(附注:我在一台机器上做得)192.168.1.38是我机器上的IP
-----------------------------------------------------------------
我已经建立了连接服务器,通过查询分析器的查询,是没有问题的。并且能够通过
这里连接服务器 ,是能够访问数据的。
-----------------------------------
连接服务器的名称:TESTSrv
exec sp_addlinkedserver TESTSrv,'ms','SQLOLEDB','192.168.1.38'
exec sp_addlinkedsrvlogin TESTSrv,'false',NULL,'sa','123'
然后,我通过查询分析器,在数据库A上增加一条记录,但出现以下错误:
--------------------------------------------------------
服务器: 消息 7391,级别 16,状态 1,过程 InRole,行 16
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
------------------------------------------------------------
触发器脚本:
CREATE TRIGGER [InData] ON [dbo].[myHIT]
AFTER INSERT
AS
BEGIN
--set xact_abort on
---BEGIN DISTRIBUTED TRANSACTION
--以上两句,加不加,一样的现象
DECLARE @rid INT
DECLARE @rname VARCHAR(50)
SET @rid=-1
SET @rname=''
SELECT @rid = inserted.tID , @rname = inserted.tName FROM inserted
INSERT INTO TESTSrv.myDB.dbo.t1(id,name) SELECT inserted.tID , inserted.tName FROM inserted
END