我正在编写一个连接到Sybase数据库的VBScript,从表中读取一些数据并将其存储在变量中,然后连接到MS SQL服务器并将数据插入到包含先前存储的可变数据的表中。 p>
我理解这些就好了。唯一的问题是数据库连接字符串本身。这是当前正在使用的连接字符串。 (我在实际脚本中使用了正确的值,但出于安全目的在此更改了一些值)
Provider=Sybase.ASEOLEDBProvider.2;Driver={SYBSE ASE ODBC Driver};Data Source=MyDataSource;Port=1234;Database=MyDatabase;uid=MyUser;pwd=MyPassword
但它导致错误:无法找到提供商。它可能安装不正确。
以下是确定问题原因可能需要的一些系统信息:
问题似乎与连接字符串的Provider=
部分有关。值得注意的是,一旦我删除Provider=
部分,我就会收到此错误:指定的DSN包含驱动程序和应用程序之间的体系结构不匹配。所以这让我相信这里存在32位和64位不匹配。我已经对此进行了研究,结果证明修复它的方法是在连接字符串中添加Provider=
,以某种方式指定要使用的连接字符串。以下是我在连接字符串中尝试过的提供商列表:
所有这些都会引发同样的错误。我在这里错过了什么?
编辑:根据您的建议,我对脚本进行了一些修改,并且已经能够超越初始错误,但现在我得到了完全不同的错误。这是现在的脚本
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
答案 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)匹配也很重要。