AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 106192
Accepted
Shial
Shial
Asked: 2010-01-26 11:58:48 +0800 CST2010-01-26 11:58:48 +0800 CST 2010-01-26 11:58:48 +0800 CST

Win7 SQL 错误下的旧版 VB6 应用程序

  • 772

我们有一个相当不幸的遗留应用程序在工作,它最初是用 VB6 编写的,它比我们 IT 部门的任何人都早了至少 5 年。我们有一个合同开发人员进行持续维护,他可以在哪里将部分重写为 .NET 代码(不确定他的技术,这是他作为 IBM 工程师的日常工作的副业)应用程序运行良好(例如是)在windows XP下。我们只有几台主要用于测试的 Windows 7 机器,而这个应用程序似乎碰壁了。诸如后台未加载和 SQL 错误之类的事情。这甚至在管理员下运行。

从 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

然后它似乎断开了它的连接并且找不到 ODBC 连接,尽管它连接到同一个数据库。从跟踪来看,它似乎配置了连接,然后它开始触发 SQLFreeStmt 以取消绑定并关闭,然后在应用程序中它尝试做它没有连接的事情。

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)

几乎我在这个问题上的所有搜索都出现了连接字符串有问题的编程问题。在这个特定场景中唯一不同的是 Windows 7,我知道连接字符串很好,因为它可以在 XP 机器上运行。VB 组件应该在 Win7 下仍然可以使用。我的电脑运行的是32位win7,我的VP运行的是Win7 64位,两者都有同样的问题,所以可以排除。

我已经尝试重新安装 SQL Native Client 和 VB 运行时以及有问题的应用程序。希望我能找到解决方案,而不必求助于使用 XP VM。

编辑 - 经过多次尝试,我们被迫使用 XP VM 作为解决方案。要么 VB 组件不像他们声称的那样兼容,要么这个古老的应用程序正在做一些有趣的事情。

sql-server windows-7 vb6
  • 2 2 个回答
  • 1864 Views

2 个回答

  • Voted
  1. Mike Edwards
    2010-03-27T05:17:13+08:002010-03-27T05:17:13+08:00

    如果它是从桌面运行的应用程序(即不是作为服务),您是否尝试将应用程序设置为以兼容模式运行?我在 VB6 程序中遇到了类似的问题(读取从程序的两个不同部分调用的注册表的相同功能,一个有效,另一个无效,但从 VB6 IDE 两者都有效)并且只需右键单击并进行 Win7 测试为了兼容性,选择 XP SP2 模式解决了这个问题。

    • 1
  2. Best Answer
    Shial
    2011-02-09T06:30:42+08:002011-02-09T06:30:42+08:00

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

    • 0

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve