首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个有关问题好多天了没解决,请,

2012-04-14 
一个问题好多天了没解决,请高手指点,在线等。SQL codealter proc testasbegin tran Insert into [123.152.1

一个问题好多天了没解决,请高手指点,在线等。

SQL code
alter proc testasbegin tran Insert into [123.152.11.3].db.dbo.tb(operatedate) values(getdate())select max(id)  from [123.152.11.3].db.dbo.tbif(@@error <> 0)beginrollback endelsebegincommitend

SQL code
我在执行上面这个存储过程时,提示以下错误:message:7391 level:16oleDB属性"SQLOLEDB"分散事务不能开始,要求进行的操作不能进行。OLE/DB provider returned message: 被指定的事务并行,新建的事务不能执行。




我不加事务没有问题,加上了 就出上面的问题


[解决办法]
启动分布式事务
[解决办法]
如果这句能成功?
Insert into [123.152.11.3].db.dbo.tb(operatedate) values(getdate())

则我认为下面的代码没有问题.
if(@@error <> 0)
begin
rollback 
end
else
begin
commit
end

看不明白了,帮顶.
[解决办法]
首先[123.152.11.3] 不是和你执行的数据库所在的服务器
远程事务不可以有事务控制的啊
很奇怪,你为什么不到[123.152.11.3]直接执行呢,这样做不安全而且还有很多隐患,如ip改了怎么办,以后维护换人了可能找半天都找不到,所以改下执行的服务器吧,也不复杂
[解决办法]
SQL code
alter proc testasbegin tran Insert into [123.152.11.3].db.dbo.tb(operatedate) values(getdate())select max(id)  from [123.152.11.3].db.dbo.tbcommit tran --提交事务,如果最近一条SQL有错,则回滚if(@@error <> 0)beginrollback end 

热点排行
Bad Request.