SQLOLEDB无法启动分布式事务,请问在触发器中如何向远程数据库写值?在线等待50分!

wweight 2004-06-08 12:29:04
我在本地数据库建一触发器,如何向远程数据库写值?
我用如下代码不行:insert opendatasource('SQLOLEDB','Data Source=211.162.2.100; User ID=test; Password=test').UserInfo.dbo.Job select * from inserted 提示新事务不能登记到指定事务处理器,OLEDB提供程序SQLOLEDB无法启动分布式事务.用sp_addlinkedserver在查询分析器中都是可行的,在局域网内两台SQL服务器之间也是可以的,但就是不能向外网写值。请高手帮忙,谢谢!!!
...全文
1725 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
andzen 2004-09-04
  • 打赏
  • 举报
回复
远程服务器和链接服务器的写(INSERT UPDATEA)操作好像在触发器里面都用不了,存储过程里面和查询分析器里面都可以,所以要用另外的方法,但是如果需要实时同步,好像没有好的别的办法,不需要实时的数据可以用其他方法如:JOB定时传输数据+ 跨服务器的分布式视图解,方法挺简单的;
wweight 2004-09-02
  • 打赏
  • 举报
回复
这个问题到现在还没有搞定,我只好先结了!希望大家以后继续探讨:)
wweight 2004-08-03
  • 打赏
  • 举报
回复
TO ljqstone(ljqstone):
这个问题我还没有搞定,近期一直忙于别的事情,也就没有研究了。我暂时用作业实现的
ljqstone 2004-07-31
  • 打赏
  • 举报
回复
wweight(东风破) ( ) “我如果把C机的放在A,B的局域网内,没有问题。还是与外网有关,晕!”

如果真的是这样,那怎么办呢???
ljqstone 2004-07-31
  • 打赏
  • 举报
回复
我如果把C机的放在A,B的局域网内,没有问题。还是与外网有关,晕!

如果真的是这样,那怎么办呢???
ljqstone 2004-07-31
  • 打赏
  • 举报
回复
最近我也碰到类似的问题:
我在查询分析器中执行sp_addlinkedserver,再在查询分析器中调用远程存储过程,执行成功!
但是在触发器[注:该触发器是表的Insert触发器]中执行远程存储过程时,
就出现如下错误信息:
[OLE/DB provider returned message:新事务不能登记到指定的事务处理器中。]
[该操作未能执行,因为OLE DB提供程序‘SOL OLEDB’无法启动分布式事务。]
是不是在触发器中就不能调用远程存储过程????
是不是涉及到事务,就不能调用远程过程???
wweight 2004-06-14
  • 打赏
  • 举报
回复
我如果把C机的放在A,B的局域网内,没有问题。还是与外网有关,晕!
ljh13448874 2004-06-13
  • 打赏
  • 举报
回复
试试这个办法:

用记事本方式打开 C:\WINNT\system32\drivers\etc文件夹里面的hosts
在文件末尾加入新的行:
211.162.2.100 服务器名称
j9988 2004-06-12
  • 打赏
  • 举报
回复
1.“我的组件服务里没有“网络 DTC 访问、网络管理、网络事务、DTC登录账户”设置项”
--这是windows2003设置。win2000你网上查查。你A机跟B机事务正常。说明设置正确。
 重点检查C机的设置。

首先得保证telnet C机 135 能通。不通就没话说了,肯定是C机设置不行。
j9988 2004-06-12
  • 打赏
  • 举报
回复
分布式事务是双向相互的:
1.运行DTCPing是双机运行:在A机按START,C机按Ping。然后倒过来试。
你现在主要是C机,C机的MSDTC正常服务??

2.telnet C机 135不行,跟对方机MSDTC没开或没设好有很大关系。

仔细检查C机。
CSDNM 2004-06-11
  • 打赏
  • 举报
回复
建议找j9988

先自己检查是否防火墙的问题,你现在远程RPC还不能连通
wweight 2004-06-11
  • 打赏
  • 举报
回复
防火墙是没有的。存储过程中能不能实现呢?请教!
zjcxc 2004-06-08
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2835/2835706.xml?temp=.1959955
回复人: j9988(j9988)

一.A.不用事务,关用SELECT 语句.是否可以分布式查询?

B.LINKSERVER 在做分布式更新事务时不能对本机操作.(就是不能环回分布式事务)

C.DBCC TRACEON (3604, 7300)--用跟踪看更详细错误信息.

D.下载MS提供的DTCPing.exe 分装在两台机上,按README说明来运行它.看出错信息.
http://download.microsoft.com/download/complus/msdtc/1.7/nt45/en-us/DTCPing.exe

二.两台机的MSDTC是否都打开了.

三.MSDTC设置是否正确.
1.打开命令提示,运行"net stop msdtc",然后运行"net start msdtc"。
2.转至"组件服务管理工具"。
3.浏览至"启动管理工具"。
4.选择"组件服务"。
a.展开"组件服务"树,然后展开"我的电脑"。
b.右键单击"我的电脑",然后选择"属性"。
C.在 MSDTC 选项卡中,确保选中了下列选项: 网络 DTC 访问
网络管理
网络事务
XA 事务
e.另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。
5.单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。
所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。
6.单击"确定"关闭"我的电脑"属性窗口。

四.
MSDTC依赖于RPC,RPC使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙.
telnet IP 135
如果是关闭的打开它.

五.
有的机由于各种原因),SQLOLEDB不能使用分布式事务,更改为"MSDASQL" 的ODBC方式联接.
使用RRAS而不是RAS.(控制面版--管理工具--远程服务管理器)
Check whether you are using Remote Access Server (RAS) to access remote servers. If so, make sure that you have implemented Routing RAS (RRAS). Linked server does not work on RAS because RAS allows only one way communication.


七.检查你的两台服务器是否在同一个域中.
如果不在同一个域中,是否建立可信任联接.

八.如果是WIN2000,升级到SP4

九.升级MDAC到2.6以上,最好是2.8.

十.要安装SQL的最新补丁: sp3a
'全部补丁的位置
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=9032f608-160a-4537-a2b6-4cb265b80766

'应该安装的补丁sql 2000 sp3
http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql2ksp3.exe
wweight 2004-06-08
  • 打赏
  • 举报
回复
我在不停的刷新页面,希望能找到希望!
wweight 2004-06-08
  • 打赏
  • 举报
回复
我用Dtcping.exe ping本机时提示如下:RPC test is successful Partner's CID:A5A4810B-B024-4CAB-B8AC-9054AB8E2405 JYWEBSERVER Initiating DTC Binding Test....Test Guid:D5449A8C-9BEF-4F11-A48A-9764084DF462 Trying Bind to JYWEBSERVER
应该是成功提示,但ping远程就提示找不到服务器.我的组件服务里没有“网络 DTC 访问、网络管理、网络事务、DTC登录账户”设置项,为什么?不同域的可信任联接具体指什么?我telnet 到本机和远程135好像都没有什么反应,头痛!这个问题急死我了...
wweight 2004-06-08
  • 打赏
  • 举报
回复
你好,zjcxc久闻大名!我机器的SP4和SQL SP3早就打过了,MDAC我刚才也更新为2.8了,现在我的网络布局为如下:机器A192.168.0.10,机器B192.168.0.20,机器C211.162.2.100;我在A机器上建一触发器用insert opendatasource方法可以写值到B机器,但在A上向外网的C机器上触发时就出现“新事务不能登记到指定事务处理器,OLEDB提供程序SQLOLEDB无法启动分布式事务”,我搞了一天了都没有搞定这个问题,很头痛。还有我在存储过程中向远程写值时出现“错误7405:异类查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项,这将确保一致的查询语义,请启用这些选项”,我在数据库把这两项都选上了,还是出现这个提示,为什么?请教!!!

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧