我在哪里可以获得有关ODBC和&amp ;;的高质量信息。访问数据库?

时间:2012-01-02 17:43:10

标签: c++ mfc odbc

我在哪里可以获得有关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增加了一些现在阻止此功能的安全性。

我感兴趣的是:

  1. Microsoft的规范参考资料,实际记录了各种ODBC Access接口,选项,版本,主机问题等。
  2. 有关并发警告的具体信息。
  3. 尝试在access 2000 dbm中创建视图时有关明显权限失败的特定信息。
  4. 对上述现代化建议,没有彻底检修或技术更换。即我很乐意将Access文件更新到2003或2007或其他任何东西,或者可能将后端切换到SQL Server Lite,但我无法证明从ODBC更改为某些替换中间件(它不值得时间和风险)。
  5. 感谢您提供的任何想法或帮助。

1 个答案:

答案 0 :(得分:1)

是的,远程客户端的迁移可能很痛苦。我绝对试图不惜一切代价避免访问的部分原因。我已经完成了以下两种方式之一。 1)使用WebEx(或其他一些在线会议程序)来获取对远程计算机的控制,以确保根据需要进行迁移。 2)构建新代码,检查数据库是否已迁移。如果新数据库(SQL Server)显示为未找到,则应用程序将触发迁移工具。但是,这意味着构建和完善迁移实用程序和脚本以自动执行迁移,因为可能会出现任何问题。

我刚开始做的一件事就是在数据库中构建一个app兼容性表。这样代码可以检查以确保DB模式版本匹配。我还包括另一个表(加密)和所有必要的SQL,以将数据库升级(迁移)到新版本。这样,应用程序可以确定需要迁移数据库,并且可以通过脚本运行它来执行此操作。

我真的希望这会有所帮助。