【发布时间】:2015-06-16 11:26:31
【问题描述】:
我正在编写一个连接到 Sybase 数据库的 VBScript,从表中读取一些数据并将其存储在变量中,然后连接到 MS SQL 服务器并将数据插入到表中,其中包含之前存储的变量数据。
我理解这些就好了。唯一的问题是数据库连接字符串本身。这是当前正在使用的连接字符串。 (我在实际脚本中使用了正确的值,但出于安全目的在此处更改了一些值)
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 驱动程序?