跨服务器倒资料遇到的问题

rocklicong 2006-07-31 03:49:38
我用
sp_addlinkedserver 'soft'
go
exec [soft].master..xp_cmdshell 'net start msdtc',NO_output
用insert into hr_employee
select top 10 * from [soft].g4hrp.dbo.hr_employee显示:
Server: Msg 7391, Level 16, State 1, Line 1
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
而用:select top 10 * into #w1 from [soft].g4hrp.dbo.hr_employee
insert into hr_employee select * from #w1 就可以。请教一下各位高人问题出在哪,谢谢
...全文
143 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rocklicong 2006-08-02
  • 打赏
  • 举报
回复
用實表不可以,且用SET XACT_ABORT ON 我都試過但是結果仍是一樣的,顯示無法提交新事務,和上面的錯誤顯示是一樣的
yjdn 2006-07-31
  • 打赏
  • 举报
回复
或者把SET XACT_ABORT 设置为 ON看看是否还有那样的错
yjdn 2006-07-31
  • 打赏
  • 举报
回复
由于每一个Insert 与Update都有一个排它锁,
而你
insert into hr_employee
select top 10 * from [soft].g4hrp.dbo.hr_employee
这一句,是从一个链接服务器读取记录再插入到MSSQL表中,

本身这个事务关联到两个数据库,上面出错,应该是不支持分布式
事务。

而你后面那句
select top 10 * into #w1 from [soft].g4hrp.dbo.hr_employee
insert into hr_employee select * from #w1

--不知道这是临时表没事务,或者说select into 没事务?
楼主你试一下把临时表改成正式表看看,是否还有那样的错误

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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