没用事务,却老报事务错误。。。。

wangxianshou 2010-06-30 04:50:35
A机器上执行,创建临时表
CREATE TABLE #sales (
。。。。
) ON [PRIMARY]

declare @SqlStr as varchar(8000)
SET @SqlStr = 'SELECT V_S.* FROM B机器上的表 V_S
WHERE V_S.SAL_DT BETWEEN ''2010/04/10'' AND ''2010/04/11'''

INSERT INTO #sales (不加这段,可以抽出数据,加上就报错)
EXEC (@SqlStr)

----------------------------------------------------------------------------
サーバー : メッセージ 7391、レベル 16、状態 1、行 1
OLE DB プロバイダ 'SQLOLEDB' は分散トランザクションを開始できなかったので、要求した操作は実行されませんでした。
[OLE/DB provider returned message: 指定されたトランザクション コーディネータに、新規トランザクションを参加できませんでした。]
OLE DB エラー トレース [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
------------------------------------------------------------------------
意思就是: 分散式事务,我晕,压根就没有用事务吗

这是什么原因?
...全文
100 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
宇峰科技 2010-07-01
  • 打赏
  • 举报
回复
Sharon_liu

(三天不结帖的木有小JJ) ,那要是女的呢
claro 2010-06-30
  • 打赏
  • 举报
回复
playwarcraft说的有道理。
在A和B上分别查询看看结果如何:
select server_id,name,data_source,product from sys.servers


如果是SQL2005及以上版本,参考:
http://blog.csdn.net/claro/archive/2009/07/03/4317900.aspx
流氓兔 2010-06-30
  • 打赏
  • 举报
回复
SELECT V_S.* FROM B机器上的表
是不是B机器的表没法link啊
wangxianshou 2010-06-30
  • 打赏
  • 举报
回复
EXEC (@SqlStr)

换成select 语句 就可以放入。

我这个处理不需要事务处理的
playwarcraft 2010-06-30
  • 打赏
  • 举报
回复
Sharon_liu 2010-06-30
  • 打赏
  • 举报
回复
应该是因为远程事务和当前事务可能不一致,无法保证事务完整性。。。。
playwarcraft 2010-06-30
  • 打赏
  • 举报
回复
把DTC之类的全开吧
wangxianshou 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 rucypli 的回复:]
没必要拼写动态语句吧
[/Quote]
这是我从一个复杂存储过程中抽出来的一段,问题点所在
wangxianshou 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 playwarcraft 的回复:]
应该是serverlink的问题
[/Quote]
我不往临时表中放数据,只是exec抽出数据的时候

是没问题的。

一往临时表中放数据就报错
rucypli 2010-06-30
  • 打赏
  • 举报
回复
没必要拼写动态语句吧
playwarcraft 2010-06-30
  • 打赏
  • 举报
回复
应该是serverlink的问题
claro 2010-06-30
  • 打赏
  • 举报
回复
不太明白
-try
CREATE TABLE ##sales


关键看见日文就火。

22,207

社区成员

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

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