【问题标题】:VBScript error connecting to Sybase Database - Provider cannot be found连接到 Sybase 数据库的 VBScript 错误 - 找不到提供程序
【发布时间】:2015-06-16 11:26:31
【问题描述】:

我正在编写一个连接到 Sybase 数据库的 VBScript,从表中读取一些数据并将其存储在变量中,然后连接到 MS SQL 服务器并将数据插入到表中,其中包含之前存储的变量数据。

我找到了几个现有的脚本来让我继续 herehere

我理解这些就好了。唯一的问题是数据库连接字符串本身。这是当前正在使用的连接字符串。 (我在实际脚本中使用了正确的值,但出于安全目的在此处更改了一些值)

Provider=Sybase.ASEOLEDBProvider.2;Driver={SYBSE ASE ODBC Driver};Data Source=MyDataSource;Port=1234;Database=MyDatabase;uid=MyUser;pwd=MyPassword

但它导致错误:找不到提供程序。它可能没有正确安装。

以下是确定问题原因可能需要的一些系统信息:

  • 脚本将在 64 位 Windows 7 机器上运行
  • 我已使用 MS Access 成功连接到此 Sybase 数据库
  • 我已安装 Sybase ASE ODBC 驱动程序(32 位)版本 03.50.0010
  • 我已经确认它已安装并通过转到 C:\Windows\SysWOW64\odbcad32.exe 并在那里找到驱动程序
  • 数据库是系统 DSN(不是用户 DSN)
  • Sybase Open Client 10.0.4 版

问题似乎与连接字符串的Provider= 部分有关。这里值得注意的是,当我删除Provider= 部分时,我会收到此错误:指定的DSN 包含驱动程序和应用程序之间的体系结构不匹配。所以这让我相信这里有 32 位和 64 位不匹配。我对此进行了研究,结果发现修复它的方法是将Provider= 添加到您的连接字符串中,以某种方式指定要使用哪个。这是我在连接字符串中尝试过的提供者列表:

  • Sybase ASE OLE DB 提供程序
  • Sybase.ASEOLEDBProvider
  • ASEOLEDB
  • ASEOLEDB.1
  • Sybase.ASEOLEDBProvider.2
  • Sybase
  • 优势 OLE DB 提供程序

所有这些都会引发相同的错误。我在这里想念什么?


编辑:根据您的建议,我对脚本进行了一些修改,并且能够克服最初的错误,但现在我得到了一个完全不同的错误。这是现在的脚本

Dim connStr, objConn

DataSource = "ICCM_PREVIEW"
ServerIP = "1.2.3.4"
Port = "1234" 
DBuser = "myUser" 
DBpwd = "myPassword" 
DBName = "myDatabase" 
Driver = "SYBASE ASE ODBC Driver"

connStr = ""
connStr = connStr &"Driver="& Driver &";"
connStr = connStr &"Data Source="& DataSource &";"
connStr = connStr &"Srvr="& ServerIP &","& Port &";"
connStr = connStr &"Database="& DBName &";"
connStr = connStr &"uid="& DBuser &";"
connStr = connStr &"pwd="& DBpwd &";"

Wscript.Echo connStr 

'Define object type
Set objConn = CreateObject("ADODB.Connection")

'Open Connection
objConn.open connStr

这是我现在收到的错误消息,但我不知道如何解决这个问题:

Microsoft OLE DB Provider for ODBC Drivers: [SYBASE][ODBC Sybase driver][Sybase]ct_connect(): user api layer: internal Client Library error: HAFAILOVER:Trying to connect to server

【问题讨论】:

  • 当您从 Access 连接到 Sybase 数据库时,您使用的是什么驱动程序?此外,您似乎使用了 ODBC 驱动程序并指定了 OLE DB 提供程序。您是否尝试过获取 OLE DB 驱动程序?

标签: database vbscript sybase


【解决方案1】:

您已经为 sybase 安装了 32 位 ODBC 驱动程序,但您打算在 64 位计算机上运行它。您要么还需要安装 64 位驱动程序,要么需要在 32 位模式下运行 vbscript。

您可以在此处阅读如何在 32 位模式下运行 vbscript:How do I run a VBScript in 32-bit mode on a 64-bit machine?

要添加的编辑:如果您尝试在 32 位模式下运行 vbscript,请确保将 provider= 位从连接字符串中删除。

还添加:与provider= 位相关。您正在使用 ODBC 驱动程序,但您尝试添加到连接字符串中的提供程序是 OLEDB 提供程序。我很确定你不能在同一个连接字符串中混合和匹配 OLEDB 和 ODBC,因为它们是不同的技术。另一个建议是为 sybase 安装 64 位 OLEDB 驱动程序,并使用该驱动程序使用 OLEDB 连接字符串。

最后,有几个选项,但匹配驱动程序和客户端之间的架构很重要。将驱动程序软件与客户端 (ODBC/OLEDB) 相匹配也很重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多