链接服务器在触发器中的使用有问题吗?
我的链接服务器建立语句如下:
exec sp_dropserver 'srv_lnk_unicom','droplogins'
exec sp_addlinkedserver 'srv_lnk_unicom','','SQLOLEDB','211......
exec sp_addlinkedsrvlogin 'srv_lnk_unicom','false',null,'sa','xxxx'
exec sp_serveroption 'srv_lnk_unicom','rpc out','true'--这个允许调用链接服务器上的存储过程
exec sp_serveroption 'srv_lnk_unicom','connect timeout','3'
exec sp_serveroption 'srv_lnk_unicom','query timeout','3'
在查询分析器上使用如下语句执行:
declare @error_no int,@left2 varchar(2),@send_message varchar(3000),@src_addr varchar(50),@dst_addr varchar(50),@message varchar(161)
set @src_addr = 'XXXX'
set @dst_addr = '136....'
set @message = 'ck'
print @message
EXEC @error_no = srv_lnk_unicom.account.dbo.sp_sms_storage_query
@src_addr = @src_addr,
@dst_addr = @dst_addr,
@message = @message,
@send_message = @send_message output
print @send_message
可以成功。
但是在触发器里来触发执行这些语句就出现如下错误:
服务器: 消息 7391,级别 16,状态 1,过程 sp_sms_account_manage_service,行 59
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
不知道为何〉