sql server 2005使用链接服务器远程插入数据, 出现插入失败但实际已插入, 以及插入时无报错但实际未插入的情况
如题,通过链接服务器往远程数据库插入数据,通过游标一条一条插入,在循环中使用了try catch,目标表有自增字段,网络可能会有一点不好。
但偶尔会出现这2种情况:
1、插入失败但是实际已经插入成功了,第2次尝试插入时发现数据已存在(主键冲突);
2、插入时未报错,但是目标表中无该条数据。。orz
所以我现在只好在每次insert后都查下目标表是否已经存在该条数据,已确认是否插入成功。。
可有人可以解释这是什么原因,以及使用链接服务器时如何判断insert是否成功?
------解决方案--------------------用游标一条一条的插的话,可以用@@ROWCOUNT>0来判断影响行数的。
另外你这个有时候能插入成功是因为你事务并没有完全回滚
在事务前面加上SET XACT_ABORT ON 试试。
------解决方案--------------------使用事务也会这样吗
SET XACT_ABORT ON
------解决方案--------------------本帖最后由 wufeng4552 于 2014-04-01 15:24:04 编辑
使用分布式事务
insert 或者delete时锁定整个表 是由于你使用游标的造成的
是否可以不使用游标 非用游标不可?
------解决方案--------------------
建议不要在游标中向链接服务器插数据,而是在本地建临时表,游标循环插入完成后,再从临时表插入链接服务器