【问题标题】:[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified : Wierd issue[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序:奇怪的问题
【发布时间】:2013-11-26 20:43:35
【问题描述】:

我正在处理一个 .vbs 文件,在该文件中我使用以下代码行连接到 DB,而不是运行一些查询。

Set cm = CreateObject("ADODB.Command")
cm.ActiveConnection = "Driver={Microsoft ODBC for Oracle};Server ="+sInst+"; UID="+sUID+";PWD="+sPWD
cm.CommandType = 1 
cm.CommandText = sSQL 
cm.Execute()
Set cm = Nothing

对我来说奇怪的是,当我将这些行复制到 QTP 并从 QTP 运行时,它工作正常。 但是在运行 .vbs 文件时(通过双击并从 cmd),它给了我以下错误:

[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

我有另一台机器,它在这两种方式上都可以正常工作。我尽力验证了两台机器上的所有东西,但我没有得到它。

感谢任何想法/帮助/建议。

谢谢。

快速更新:
由于 vbs 不工作,我尝试用谷歌搜索并使用以下行创建批处理文件:

C:\Windows\SysWoW64\cscript.exe //NoLogo filepath\xyz.vbs

它现在可以工作了。
所以问题是如何使用来自 SysWoW64 而不是来自 system32...的 ODBC 运行 vbs?

【问题讨论】:

    标签: vbscript odbc qtp


    【解决方案1】:

    64 位 Windows 上的进程要么是纯 32 位,要么是纯 64 位。
    默认情况下,64 位 Windows 在 64 位引擎中执行您的 vbscript,该引擎无法调用任何 32 位 DLL。

    64 位 VBScript 将使用 64 位 ODBC,它只能调用 64 位 Oracle 软件(如果已安装)。
    32 位 VBScript 将使用 32 位 ODBC,它只能调用 32 位 Oracle 软件(如果已安装)。

    正如您所发现的,大多数内置 Windows 程序的 32 位版本在 64 位 Windows 上是隐藏的。您必须自己显式运行 32 位版本的 ODBC 管理员或 CSCRIPT。
    根据您的描述,您的机器上似乎安装并配置了 32 位 Oracle 软件。 64位Oracle软件通常需要单独安装和配置。

    【讨论】:

    • 感谢@Morbo 的帮助。现在我的问题是有没有一种方法可以在下面的代码行中使用 ODBC 32。 cm.ActiveConnection = "Driver={Microsoft ODBC for Oracle};Server ="+sInst+"; UID="+sUID+";PWD="+sPWD 提前致谢。
    • 没有。你误会了。根据运行的 CSCRIPT 版本,您会自动获得 32 位或 64 位 ODBC。如果您想在 64 位环境中强制使用 32 位 ODBC,您必须(明确)在 32 位 CSCRIPT 中运行您的脚本。
    【解决方案2】:

    尝试以下操作:

    转到以下路径:

    C:\Windows\SysWOW64\odbcad.exe
    

    双击会打开弹窗:

    1. 转到系统 DSN

    2. 添加

    3. 现在在Oraclient11g_home 1中选择Oracle

    4. 现在再次打开一个弹出窗口,其中包含以下字段:

      数据源名称:PQALN07(数据库名称)

      描述:PQALN07

      TNS 服务名称:PQALN07(数据库名称)

      用户 ID:RISK(架构名称)

    5. 通过在上面添加 DSN,您的问题将得到解决。

    现在使用宏运行您的 VB 代码,这次您不会收到任何错误。

    【讨论】:

      猜你喜欢
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      相关资源
      最近更新 更多