过程中打开这个,完了再关掉 SET xact_abort ON MSDTC 服务启动了没有?? 管理器里面RPC服务有没有启动?
to dinoalex 是这样做的但他出现下面的错误,还有没有其他的方法来抓取存储过程里的数据呢?麻烦告知,谢谢!服务器: 消息 7391,级别 16,状态 1,行 19 该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB.1' 无法启动分布式事务。 [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','173.25.62.1'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','50969336'
exec sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程
但它提示
服务器: 消息 15002,级别 16,状态 1,过程 sp_addlinkedserver,行 19
不能在事务内部执行过程 'sp_addlinkedserver'。
服务器: 消息 15002,级别 16,状态 1,过程 sp_addlinkedsrvlogin,行 17
不能在事务内部执行过程 'sp_addlinkedsrvlogin'。
服务器: 消息 15002,级别 16,状态 1,过程 sp_serveroption,行 18
不能在事务内部执行过程 'sp_serveroption'。如果我直接在查询分析器里查询是正常的,在存储过程里我该如何该呢?
yb_fd char(30),
yb_pluid char(30),
yb_bm char(30),
yb_name char(30),
yb_gg char(10),
yb_dw char(10),
yb_xs int,
yb_kc int
)exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','173.25.62.1'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','50969336'
exec sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程insert into #yb ( yb_fd,yb_pluid,yb_bm,yb_name,yb_gg,yb_dw) exec srv_lnk.V7GMS.dbo.GetMooncakeStatus '14002921'--exec srv_lnk.V7GMS.dbo.GetMooncakeStatus '14002921'
exec sp_droplinkedsrvlogin 'srv_lnk',null
exec sp_dropserver 'srv_lnk'
select * from #ybdrop table #yb
--COMMIT TRANSACTION
GO
但执行完后就会提示
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。如果只是单纯的调用exec srv_lnk.V7GMS.dbo.GetMooncakeStatus '14002921' 就没问题
但如果 insert into #yb ( yb_fd,yb_pluid,yb_bm,yb_name,yb_gg,yb_dw) exec srv_lnk.V7GMS.dbo.GetMooncakeStatus '14002921' 就会提示该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
这是为何呀,请各位大哥帮帮忙小弟谢谢了!
如何配置呢?其实我插入到临时表里主要就是想对表的数据做筛选,但是直接exec 存储过程就没问题,但是插入零时表就会出错,能不能直接对存储过程进行筛选呢例如exec 存储过程 where hh='123'之类的,在线等待急...
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','173.25.62.1'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','50969336'
exec sp_serveroption 'srv_lnk','rpc out','true'这个不执行
exec sp_droplinkedsrvlogin 'srv_lnk',null
exec sp_dropserver 'srv_lnk' 存储过程变成CREATE PROCEDURE yzl_yb as Create TABLE #yb(
yb_fd char(30),
yb_pluid char(30),
yb_bm char(30),
yb_name char(30),
yb_gg char(10),
yb_dw char(10),
yb_xs int,
yb_kc int
) insert into #yb ( yb_fd,yb_pluid,yb_bm,yb_name,yb_gg,yb_dw) exec srv_lnk.V7GMS.dbo.GetMooncakeStatus '14002921' --exec srv_lnk.V7GMS.dbo.GetMooncakeStatus '14002921' select * from #yb
drop table #yb
--COMMIT TRANSACTION
GO
你是这样做了吗?
SET xact_abort ON
MSDTC 服务启动了没有?? 管理器里面RPC服务有没有启动?
是这样做的但他出现下面的错误,还有没有其他的方法来抓取存储过程里的数据呢?麻烦告知,谢谢!服务器: 消息 7391,级别 16,状态 1,行 19
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB.1' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]