标题: Acces远程数据同步出现 多步 OLE DB 操作生成错误 如果可用,请检查每个 OLE DB [打印本页] 作者: tmtony 时间: 2013-11-5 23:30 标题: Acces远程数据同步出现 多步 OLE DB 操作生成错误 如果可用,请检查每个 OLE DB 今天在调试几年前帮客户写的远程数据同步程序(mysql ODBC与sql server数据库同步)
在ACCESS程序同步过程中,偶尔会出现以下错误, 找了很多资源和方法,终于解决,与大家分享一下,希望有同样问题的网友可参考.
远程数据同步出现 多步 OLE DB 操作生成错误 如果可用,请检查每个 OLE DB 的状态值。没有工作被完成错误的英文提示是: 2147217887;Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done
一. 开始使用微软的解决办法 (可能对某些情况有用)
此错误有两个可能的原因如下:
在注册表中,用于 OLE DB 提供程序的 CLSID 项下都可能有一个名为 OLEDB_SERVICES 的条目。如果用于创建 ADO 连接的 OLE DB 提供程序没有 OLEDB_SERVICES 的项时,ADO 尝试设置提供程序不支持的属性,将发生此错误。有关此注册表项的详细信息,请参阅"解决方案"一节。
是否存在 OLEDB_SERVICES 项,但在 ADO 连接字符串时出现问题,则将发生此错误。
如果将 OLEDB_SERVICES 注册表项不存在,可以设置一个属性调用直接给提供程序。如果提供程序不支持该属性,则所进行的 ADO SetProperties OLE DB 调用将失败。如果建立连接所需的属性,这将会是致命的失败。如果在连接字符串中显式包含该属性,则可能需要。
注意只支持 COM 聚合提供程序的注册表项中创建的 OLEDB_SERVICES 值。Exchange OLE DB 提供程序不支持 COM 聚合,并创建此值时,您会收到以下错误消息:0x80040E22
指定非空值控制 IUnknown,而请求的接口不是 IUnknown,或提供程序不支持 COM 聚合。
重要此部分、 方法或任务包含一些介绍如何修改注册表的步骤。但是,如果不正确地修改了注册表,可能会出现严重的问题。因此,请确保仔细按照下列步骤操作。为增加保护,对其进行修改之前备份注册表。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:322756如何在 Windows 中备份和还原注册表
启动注册表编辑器。
在 HKEY_CLASSES_ROOT\CLSID 注册表,找到的 OLE DB 提供程序的 CLSID。例如,下面的注册表项是 Microsoft OLE DB 提供程序用于 SQL Server (SQLOLEDB):HKEY_CLASSES_ROOT\CLSID\ {0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}
单击 CLSID,然后单击编辑菜单上的添加值并添加下列注册表值:值名称: OLEDB_SERVICES
数据类型: REG_DWORD
值: 0xFFFFFFFF
注意若要查找所使用的提供程序的 CLSID,搜索 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ 在注册表中提供程序的进程 Id (例如,SQLOLEDB)。ProgID 下, 有一个键名为 CLSID。