各位大侠!棘手问题!才人才进!

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:22:12
更新远程服务器上的 jd_ywmxk这个 表时出错 怀疑是这个服务器上的 sql的问题

服务器: 消息 7306,级别 16,状态 2,行 1
未能打开表 '"sjjh"."dbo"."jd_ywmxk"'(来自 OLE DB 提供程序 'SQLOLEDB')。 提供程序未能支持行查找位置。 提供程序指出与其它属性或要求发生了冲突。
[OLE/DB provider returned message: 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。]
OLE DB 错误跟踪〔OLE/DB Provider 'SQLOLEDB' IOpenRowset::OpenRowset returned 0x80040e21: [PROPID=DBPROP_BOOKMARKS VALUE=True STATUS=DBPROPSTATUS_CONFLICTING], [PROPID=DBPROP_COMMANDTIMEOUT VALUE=600 STATUS=DBPROPSTATUS_OK], [PROPID=Unknown PropertyID VALUE=True STATUS=DBPROPSTATUS_OK], [PROPID=DBPROP_IRowsetLocate VALUE=True STATUS=DBPROPSTATUS_CONFLICTING], [PROPID=DBPROP_IRowsetChange VALUE=True...

不是代码 你有没有查下系统!?!?

此种情况,跟远程服务器的当前规则设置有关,一般都有完整性的约束,或触发器。
还有一种情况是:服务器此刻正在进行计划事务。此时不响应客户端更新。
另外,客户端在更新的时候,服务器段正在运行一些与客户端要访问的时局相关的事物,导致更新操作失败。
这些都有可能。
你这时也不要紧张。过些时候再试下了。

不是服务器上的问题,这个可能是由于多步事务引起的,不知道你远程服务器是什么数据库,并且是什么更新机制,如果你运用了事务,或者是用触发器更新远程服务器的数据,有可能出现这种情况,以前我在做的时候用一个触发器更新远程ORACLE服务器上的数据,就是这个原因,因为触发器中包含了更新的过程,即在触发时更新,这样就提示的错误与你的一模一样。

不太明白!!!!!!深奥,呵呵!

解释
如果 OLE DB 提供程序不支持 UPDATE、DELETE 和 INSERT 语句所要求的接口和 OLE DB 属性,就会返回该错误信息。

对策
在这个方案中,对 OLE DB Errors 的跟踪会输出有关特定丢失 OLE DB 支持的更多信息。例如,在 Microsoft® SQL Server™ 的情况下,如果远程表上未定义唯一索引,则该表不支持 INSERT、UPDATE 和 DELETE 语句。这种情况下,SQL 事件探查器会输出以下信息:

OLE/DB Provider 'SQLOLEDB' IOpenRowset::OpenRowset returned 0x80040e21:
[PROPID=DBPROP_BOOKMARKS VALUE=True STATUS=DBPROPSTATUS_OK], [PROPID=DBPROP_IRowsetLocate
VALUE=True STATUS=DBPROPSTATUS_OK], [PROPID=DBPROP_IRowsetChange VALUE=True
STATUS=DBPROPSTATUS_CONFLICTING], [PROPID=DBPROP_UPDATABILITY