首页 新闻 会员 周边 捐助

数据库触发器多数据库连接问题:OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中

0
悬赏园豆:50 [已解决问题] 解决于 2010-09-09 15:03

有A,B2服务器(局域网内),我在A数据库中的一表中做了一个触发器,当触发时,我想从A中读数据,然后插入数据到B服务器的数据库中:

单独的sql例子如下:

-------------------------------------------------------------------------------------------

--如果存在相同的远程登录映射,删除
Exec sp_droplinkedsrvlogin [192.168.1.249],Null
Exec sp_dropserver [192.168.1.249]
EXEC sp_addlinkedserver
'192.168.1.249', --要创建的链接服务器名称
'SQL Server' --这里就用数据源作名称
--创建链接服务器上远程登录之间的映射
EXEC sp_addlinkedsrvlogin
'192.168.1.249',
'false',
NULL,
'sa', --远程服务器的登陆用户名
'xxx' --远程服务器的登陆密码

INSERT INTO [192.168.1.249].sanchang_nhibernate.dbo.T_Theth_Member(login_Name,password,eMail,real_Name,telephone,address,mobilephone,zip,log_Time)
SELECT ROUND((RAND()* 10000000),0),ROUND((RAND()*100000),0),'',ContacterName,Phone,Address,Mobile,ZipCode,GETDATE()
FROM dbo.T_Order WHERE OrderID=791

------------------------------------------------------------------------------------

如果我单独执行这段,能够正常取数据以及向B服务器中插入数据。但写成触发器后,便会报如标题所示错误,在网上找了一些问题的解决方案,但问题还没有解决,为了使篇幅简洁,便没有将触发器语句写出来了,我想问题重点应该不是触发器的语句问题。求路过的高人指点下

stealyouheart的主页 stealyouheart | 初学一级 | 园豆:150
提问于:2010-09-08 11:34
< >
分享
最佳答案
0

如果是SQL Server 2005,我建议你使用SSMS的一个功能:链接服务器,它支持跨数据库的链接,使用的时候也很方便, select * From SQLLink.DBname.dbo.TableName 就可以了。

收获园豆:50
听风吹雨 | 菜鸟二级 |园豆:295 | 2010-09-09 01:27
谢谢听风吹雨,我是首先通过链接服务器链接了,如问题中所示: EXEC sp_addlinkedserver '192.168.1.249', --要创建的链接服务器名称 'SQL Server' --这里就用数据源作名称 --创建链接服务器上远程登录之间的映射 EXEC sp_addlinkedsrvlogin '192.168.1.249', 'false', NULL, 'sa', --远程服务器的登陆用户名 'xxx' --远程服务器的登陆密码 我的sql中的[192.168.1.249].sanchang_nhibernate.dbo.T_Theth_Member就是这样用的
stealyouheart | 园豆:150 (初学一级) | 2010-09-09 09:40
你可以先看看:http://www.cnblogs.com/gaizai/archive/2010/09/08/1821071.html
听风吹雨 | 园豆:295 (菜鸟二级) | 2010-09-09 14:43
谢谢@听风吹雨,我的问题解决,但我自己也没有搞清楚状况,我是这样处理的。昨天我的sql处理是在触发器中直接写(即跨数据取写数据)。但今天我换了种方式,因为昨天直接执行sql语句不报错,所以我把要处理的业务操作全部写进了存储过程,然后再触发器中调用,居然不报错了.....汗一个,具体原因还得继续研究了
stealyouheart | 园豆:150 (初学一级) | 2010-09-09 15:03
也谢谢你的文章,对我很有用
stealyouheart | 园豆:150 (初学一级) | 2010-09-09 15:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册