我在哪里可以获得有关ODBC和&amp ;;的高质量信息。访问数据库?
多年来,我使用MFC / C ++ / Java中的ODBC开展了各种项目。
目前,我在C ++ / MFC中有一个项目,它使用自定义的MFC层动态地连接到连接到Access 2000 dbm文件的ODBC DSN。
这通常有效。
但是,我经常收到警告,例如:
DBMS:ACCESS版本:04.00.0000 ODBC驱动程序管理器版本: 03.80.0000未实现可选功能状态:S1C00,原生:106,来源:[Microsoft] [ODBC Microsoft Access 驱动程序]
警告:驱动程序不支持请求的并发。可选的 功能未实现 状态:S1C00,Native:106,原产地:[Microsoft] [ODBC Microsoft Access 驱动程序]
现在,当我们的软件尝试创建视图时,我得到以下内容:
常规警告无法打开注册表项'临时(易失性)Jet DSN for pr ocess 0x18fc Thread 0xc0 DBC 0x8c4cfc Jet'。 状态:01000,原生:1,原产地:[Microsoft] [ODBC Microsoft Access驱动程序]
DBMS:ACCESS版本:04.00.0000 ODBC驱动程序管理器版本: 03.80.0000执行SQL:创建视图SPEC选择CALNAME为TEST,CARDNUMBER,CARTONSTYLE为CARTON,CCAL为FLUTE,CORRDIR, CUSTOMERID,描述为DESCRIPTIO,DESIGNER,DESIGNNUM,JOINTSIZE, JOINTTYPE,PANEL_D为DEPTH,PANEL_L为LENGTH,PANEL_W为WIDTH, RULRULX作为DSIZEX,RULRULY作为DSIZEY,SHEETUX作为SIZEX,SHEETUY as SIZEY,SHEETX为GROSSX,SHEETY为GROSSY,来自“Designs” DESIGNNUM不为空 警告:ODBC成功信息,驱动程序 SQLSetConnectAttr失败状态:IM006,Native:0,原点:[Microsoft] [ODBC 司机经理]
常规警告无法打开注册表项'临时(易失性)Jet DSN for pr ocess 0x18fc Thread 0xc0 DBC 0x8c4cfc Jet'。 状态:01000,原生:1,原产地:[Microsoft] [ODBC Microsoft Access驱动程序]
对于第一部分,关于未实现的可选功能的警告,以及未实现的并发状态(可能是相同的底层问题),我不知道我的软件甚至要求的并发功能是什么?什么并发状态是合适的?如何要求“正确”的?是否存在Windows版本与要求的适当并发状态的表格?
对于第二部分,关于由于未能打开注册表项而导致创建视图的特定失败:呵呵?!谁未能打开哪个注册表项?
我找到了一些有关需要在“Windows NT临时文件夹”中赋予IUSR完全权限的信息。对于需要关注桌面应用程序而言,这听起来像是一个可怕的问题。在操作存在于用户可读/写路径中的数据库文件时,使用ODBC DSN的桌面应用程序应该如何关注用户权限?允许用户执行此SQL需要多少权限?由于用户已经能够在数据库中的现有表中添加和删除列和行,还需要做些什么?
此代码曾用于在XP下工作。所以我不得不假设Vista和/或Win 7增加了一些现在阻止此功能的安全性。
我感兴趣的是:
感谢您提供的任何想法或帮助。
答案 0 :(得分:1)
是的,远程客户端的迁移可能很痛苦。我绝对试图不惜一切代价避免访问的部分原因。我已经完成了以下两种方式之一。 1)使用WebEx(或其他一些在线会议程序)来获取对远程计算机的控制,以确保根据需要进行迁移。 2)构建新代码,检查数据库是否已迁移。如果新数据库(SQL Server)显示为未找到,则应用程序将触发迁移工具。但是,这意味着构建和完善迁移实用程序和脚本以自动执行迁移,因为可能会出现任何问题。
我刚开始做的一件事就是在数据库中构建一个app兼容性表。这样代码可以检查以确保DB模式版本匹配。我还包括另一个表(加密)和所有必要的SQL,以将数据库升级(迁移)到新版本。这样,应用程序可以确定需要迁移数据库,并且可以通过脚本运行它来执行此操作。
我真的希望这会有所帮助。