设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 10901|回复: 5
打印 上一主题 下一主题

[ADO/DAO] Acces远程数据同步出现 多步 OLE DB 操作生成错误 如果可用,请检查每个 OLE DB

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2013-11-5 23:30:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在调试几年前帮客户写的远程数据同步程序(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 调用将失败。如果建立连接所需的属性,这将会是致命的失败。如果在连接字符串中显式包含该属性,则可能需要。

如果该属性设置是可选的失败不是致命的。这是这种情况,当您连接而无需显式设置连接字符串中的属性。在这种情况下,ADO 将该属性设置为 True,但会将其标记为可选。



若要变通解决此问题,请使用下列方法之一:
  • 在 ADO 连接字符串中不使用"持续安全信息"关键字。
  • 添加 OLEDB_SERVICES 注册表项,如下所示:

    注意只支持 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。
  • 如果满足这些条件,并且您仍然收到错误消息,请检查您的连接字符串的其他可能的错误。


二.我的情况使用这种办法解决的
   
     原来是mysql有一个字段 数字值 挺大,例如 99999999.999, 而我的sql server是使用 decimal 数据类型 9 ,导致容纳不下
     就提示这个错误 , 只要程序在插入前进行相关的判断及转换 ,就可以了





来自群组: Access粉丝团
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2013-11-5 23:35:30 | 只看该作者
宝贵的经验,谢谢分享!
3#
发表于 2013-11-5 23:40:54 | 只看该作者
虽然一下了看得有点懵。但不顶不行啊。

点击这里给我发消息

4#
 楼主| 发表于 2013-11-5 23:42:40 | 只看该作者
小宝和冬瓜 还没睡啊

点击这里给我发消息

5#
发表于 2013-11-6 08:54:55 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
发表于 2013-11-7 15:49:28 | 只看该作者
虽然不是很懂,先看看慢慢消化
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 20:49 , Processed in 0.116598 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表