Win7下的传统VB6应用程序SQL错误

我们在工作中有一个相当遗憾的传统应用程序,最初是在VB6中编写的,它早于我们IT部门的任何人至less5年。 我们有一个签约的开发人员进行维护,他可以在那里重写.NET代码(不知道他的技术在这里,这是他作为一名IBM工程师定期工作的副业),应用程序可以正常工作(比如它是)在Windows XP下。 我们只有几台主要用于testing的Windows 7机器,而这个应用程序似乎碰壁了。 像背景不加载和SQL错误的东西。 这甚至在pipe理员下运行。

从ODBC控制面板运行SQL跟踪显示了一些有趣的事情。 它首先在运行查询的地方成功连接到数据库,以确定它是否运行正确的版本。 这个查询工作正常。

558-1af0 ENTER SQLExecDirectW HSTMT 0x020D7548 WCHAR * 0x04C8F0F0 [ 115] "SELECT count(*) c FROM tblSoftwareVersion WHERE fldSoftwareVersion = '123456' AND fldSoftwareName = 'Application.VB'" SDWORD 115 BMS 558-1af0 EXIT SQLExecDirectW with return code 1 (SQL_SUCCESS_WITH_INFO) HSTMT 0x020D7548 WCHAR * 0x04C8F0F0 [ 115] "SELECT count(*) c FROM tblSoftwareVersion WHERE fldSoftwareVersion = '123456' AND fldSoftwareName = 'Application.VB'" SDWORD 115 

然后它似乎放弃了它的连接,并且无法findODBC连接,尽pipe它连接到同一个数据库。 从跟踪它看起来像它configuration连接,然后开始发射SQLFreeStmt解除绑定,然后closures,然后在应用程序中,它试图做它的事情没有连接。

 558-1af0 ENTER SQLFreeStmt HSTMT 0x020D7548 UWORD 2 <SQL_UNBIND> BMS 558-1af0 EXIT SQLFreeStmt with return code 0 (SQL_SUCCESS) HSTMT 0x020D7548 UWORD 2 <SQL_UNBIND> 

然后,当我尝试做一些拉动数据的事情时,就会发生这种情况

  558-1af0 ENTER SQLDriverConnectW HDBC 0x020DDA00 HWND 0x00000000 WCHAR * 0x73EF8634 [ -3] "******\ 0" SWORD -3 WCHAR * 0x73EF8634 SWORD -3 SWORD * 0x00000000 UWORD 0 <SQL_DRIVER_NOPROMPT> BMS 558-1af0 EXIT SQLDriverConnectW with return code -1 (SQL_ERROR) HDBC 0x020DDA00 HWND 0x00000000 WCHAR * 0x73EF8634 [ -3] "******\ 0" SWORD -3 WCHAR * 0x73EF8634 SWORD -3 SWORD * 0x00000000 UWORD 0 <SQL_DRIVER_NOPROMPT> DIAG [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) 

几乎我在这个问题上的所有search都出现了连接string有问题的编程问题。 唯一不同的是在这个特定的场景,虽然是Windows 7,我知道连接string是好的,因为它在XP机器上工作。 VB组件应该在Win7下仍然可以使用。 我的电脑运行32位win7和我的副总裁运行Win7的64位,都有同样的问题,可以排除。

我已经尝试重新安装SQL Native Client和VB运行时以及有问题的应用程序。 希望我能find一个解决scheme,而不必诉诸使用XP虚拟机。

编辑 – 很多尝试后,我们已经被迫与XP虚拟机作为解决scheme在这里。 要么VB的compnents不像他们声称的兼容或这个古老的应用程序做一些有趣的事情。

如果是从桌面运行的应用程序(即不是作为服务),你尝试设置应用程序在兼容模式下运行? 我有一个VB6程序类似的问题(从程序的两个不同部分读取registry调用相同的function,一个工作,另一个不,但从VB6 IDE都工作),只需右键单击并具有Win7testing为了兼容性,selectXP SP2模式解决了这个问题。

XP模式最终成为唯一可行的解​​决scheme。