Win2003+SQL 2005环境下:在服务器A上(sqlserver2005 sp1,32位)建立了一个链接服务器erp指向服务器B(sqlserver2005 sp2,64位)
运行:select count(*) from erp.ct_gc.v.xsjl 没有任何问题执行下列事务语句set xact_abort on
begin transelect sktno,jlbh into #reftbl_gc from ct_gc.dbo.xsjl insert into erp.ct_gc.v.xsjl
select x.* from
ct_gc.dbo.xsjl x,
#reftbl_gc r
where x.sktno=r.sktno and x.jlbh=r.jlbhcommit tran
go却报错:(7823 行受影响)
OLE DB provider "sqlncli" for linked server "erp" returned message "此事务已明地或暗地被确认或终止".
消息 7391,级别 16,状态 2,第 7 行
The operation could not be performed because OLE DB provider "sqlncli" for linked server "erp" was unable to begin a distributed transaction.请教,如何解决这个问题?--------------------------
二服务器都是Win2003系统,都做了如下设置:
打开“管理工具――组件服务”,以此打开“组件服务――计算机”,在“我的电脑”上点击右键。在MSDTC选项卡中,点击“安全配置”按钮。
在安全配置窗口中做如下设置:
选中“网络DTC访问”
在客户端管理中选中“允许远程客户端”“允许远程管理”
在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”
保证DTC登陆账户为:NT Authority\NetworkService
运行:select count(*) from erp.ct_gc.v.xsjl 没有任何问题执行下列事务语句set xact_abort on
begin transelect sktno,jlbh into #reftbl_gc from ct_gc.dbo.xsjl insert into erp.ct_gc.v.xsjl
select x.* from
ct_gc.dbo.xsjl x,
#reftbl_gc r
where x.sktno=r.sktno and x.jlbh=r.jlbhcommit tran
go却报错:(7823 行受影响)
OLE DB provider "sqlncli" for linked server "erp" returned message "此事务已明地或暗地被确认或终止".
消息 7391,级别 16,状态 2,第 7 行
The operation could not be performed because OLE DB provider "sqlncli" for linked server "erp" was unable to begin a distributed transaction.请教,如何解决这个问题?--------------------------
二服务器都是Win2003系统,都做了如下设置:
打开“管理工具――组件服务”,以此打开“组件服务――计算机”,在“我的电脑”上点击右键。在MSDTC选项卡中,点击“安全配置”按钮。
在安全配置窗口中做如下设置:
选中“网络DTC访问”
在客户端管理中选中“允许远程客户端”“允许远程管理”
在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”
保证DTC登陆账户为:NT Authority\NetworkService
解决方案 »
- 如何用 JET SQL 或 Microsoft.ACE.OLEDB.12.0 合并不同数据库中的表
- 一个查询行和列的问题
- select * from tb1 where id in (select id from tb2)太慢,有什么方法可以取代 in
- 求SQL语句,比较简单!
- 怎么样用SQL语句把自动增长的字段改为不自动增长??
- sql内把另一数据库的表导到另一个数据库,如何把索引,及表内的属性也导到另一数据库中。急!!谢谢
- 高难度问题:SQL处理中英文混合字符串问题,高手在不在?
- 如何停止一个数据库服务
- vf的程序编译成.exe后,执行时总提示无法找到vf的支持库(can not locate vf support library),应如何处理?!
- 求一sql语句
- 请教一句SQL语句.insert 的问题
- 关于主键的原理的问题
1. 网络通, sql server 之间能够互相连接
2. 分布式事务要求的 135 端口没有被防火墙限制 (可以用 DTCPing.exe 这个工具来检查)
3. 服务器之间能够做相互的身份验证. 如果无法保证, 建议取消身份验证(前面步骤三中有个地方设置如何进行身份验证)
4. MSDTC 服务是开启的
telnet erp 135 正常
2. 135端口都是打开的
3. 哪三个步骤?
4. msdtc 都是打开的
BEGIN DISTRIBUTED tran;--分佈式事務
...
commit tran
然后连接到B服务器,把A上的数据拉过来,执行:拉操作。 立刻成功了!很是郁闷,配置都没有变动,为什么拉数据能成功,推数据却失败了,以前使用sqlserver2000时,这个问题好像没碰到过还请邹老大和各位高手释疑!
select x.* from
ct_gc.dbo.xsjl x,
#reftbl_gc r
where x.sktno=r.sktno and x.jlbh=r.jlbh >>>
这个需要启动分布式事务,因为是链接服务器进行的插入操作,本机需要跟ERP的分布式协调器交互, 确保插入成功。INSERT INTO xsjl
select * from A.ct_gc.v.xsjl
>>这个所谓的"拉"操作,不沙及对链接服务器的更新操作,所以不用启动分布式事务, 操作会成功。
Invoking RPC method on erp
Problem:fail to invoke remote RPC method
Error(0x6D9) at dtcping.cpp @303
-->RPC pinging exception
-->1753(终结点映射器中没有更多的终结点可用。)
RPC test failed
到底该如何解决啊?
新的发现,好像与上面的讲法不符合连接A服务器后,如果不用事务的操作模式,只是简单的执行:insert into erp.ct_gc.v.xsjl
select * from ct_gc.dbo.xsjl 一切正常!注意:这仍然是推操作。
为什么做成事务模式就不成功?请各位高手释疑,想明明白白的搞清这个问题