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

救命呀,跨DB掉存储 出错呀~~~
我要从已个MSDB(SQL2008)调用另一台MSDB(SQL2000)的存储过程,
手动调用时没问题 :

declare @aa datetime
declare @bb datetime
declare @cc datetime
declare @dd datetime
set @aa=cast('2012/12/7' as datetime)
set @bb=cast('13:00:00' as datetime)
set @cc=cast('2012/12/7' as datetime)
set @dd=cast('15:00:00' as datetime)
exec [ZIYUAN].TH.[dbo].TEST '2012120700501','C0B1C0',@aa,@bb,@cc,@dd,1


我把调用该存储过程 写到触发器中 就出错:

链接服务器"ZIYUAN"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "该事务管理器已经禁止了它对远程/网络事务的支持。"。
消息 7391,级别 16,状态 2,过程 pr_pdate_ziyuan,第 26 行
无法执行该操作,因为链接服务器 "ZIYUAN" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。


ZIYUAN:是我创建的连接服务器名称,大侠们帮帮忙呀,BOSS要发飙啦,,,
------最佳解决方案--------------------
触发器里用dblink需开启MSDTC,

以前也碰到过差不多的问题,希望有所帮助。
http://blog.csdn.net/playwarcraft/article/details/3986908
------其他解决方案--------------------
msdtc程序,防火墙设置允许通信
------其他解决方案--------------------
1.msdtc服务 ,两台服务器都要开启。
2.135 端口允许通防火墙。
------其他解决方案--------------------
都有开启的,防护墙也关掉啦,telnet 135 也是通的

------其他解决方案--------------------
引用:
触发器里用dblink需开启MSDTC,

以前也碰到过差不多的问题,希望有所帮助。
http://blog.csdn.net/playwarcraft/article/details/3986908


我按照你的设置做啦,还是不行呀,,,
------其他解决方案--------------------
搞定啦,因为是不用域
要在C:/WINDOWS/system32/drivers/etc/hosts添加映射
搞定 谢谢大家的帮忙