连接到Sybase数据库的VBScript错误 - 找不到提供程序

时间:2015-04-10 16:41:51

标签: database vbscript sybase

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

我找到了几个现有的脚本来帮助我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
  • Advantage 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

1 个答案:

答案 0 :(得分:2)

您已为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)匹配也很重要。