日期:2014-05-17  浏览次数:20630 次

头疼:"多步 OLE DB 操作产生错误","未能创建可接受的游标"
错误信息:
链接服务器"192.168.x.x"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。"。
消息 16955,级别 16,状态 2,第 1 行
未能创建可接受的游标。

SQL代码:
EXEC master.sys.sp_addlinkedserver 'Test','','SQLOLEDB','192.168.x.x'
GO
EXEC master.sys.sp_addlinkedsrvlogin 'Test','false',NULL,'sa','xxx'
GO
--OK
INSERT INTO Test.xx.dbo.test(t1) SELECT '100'
--OK
UPDATE a SET t1 = '200' FROM Test.xx.dbo.test AS a WHERE 1=1
--Error
UPDATE a SET t1 = '300' FROM Test.xx.dbo.test AS a,sys.sysobjects AS b WHERE 1=1 --加本地表或临时表就报错

测试环境:
1、SQL2k5链接SQL2k时只要from指定本地表或临时表就报错
2、SQL2k5链接SQL2k5时正常
3、SQL2k连接SQL2k5时也正常

这啥鸟问题真是郁闷,快速求解,,,!!!


------解决方案--------------------
SQL code

/**
 *有可能是数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数。
 */

------解决方案--------------------
用64位sql2005 链接 32位sql2000 可以出现下面的问题:
http://rubyol.javaeye.com/blog/768976


------解决方案--------------------
探讨
测试环境:
1、SQL2k5链接SQL2k时只要from指定本地表或临时表就报错
2、SQL2k5链接SQL2k5时正常
3、SQL2k连接SQL2k5时也正常