Я пишу VBScript, который подключается к базе данных Sybase, считывает некоторые данные из таблицы и сохраняет ее в переменных, затем подключается к серверу MS SQL и вставляет данные в таблицы с переменными данными, которые были сохранены ранее.Ошибка VBScript, связанная с Sybase Database - Поставщик не найден
Я нашел пару существующих скриптов, чтобы получить меня. here и here.
Я понимаю их просто отлично. Единственная проблема - сама строка подключения к базе данных. Вот строка подключения, которая в настоящее время используется. (я использовал правильные значения в реальном сценарии, но изменил некоторые здесь в целях безопасности)
Provider=Sybase.ASEOLEDBProvider.2;Driver={SYBSE ASE ODBC Driver};Data Source=MyDataSource;Port=1234;Database=MyDatabase;uid=MyUser;pwd=MyPassword
Но это вызывает ошибку: Поставщик не может быть найден. Он может быть неправильно установлен.
Вот некоторая информация о системе, что вам может понадобиться, чтобы определить причину проблемы:
- Сценарий будет работать на 64-битной Windows 7 машины
- Я успешно подключен к этой базе данных Sybase с использованием MS Access
- Я установил Sybase ASE ODBC Driver (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 Provider
- Sybase.ASEOLEDBProvider
- ASEOLEDB
- ASEOLEDB.1
- Sybase.ASEOLEDBProvider. 2
- Sybase
- Преимущество OLE DB Provider
Все они выдают ту же ошибку. Что мне здесь не хватает?
EDIT: В соответствии с вашими предложениями я сделал некоторые изменения в сценарий и смог протиснуться мимо начальной ошибки, но теперь я получаю совершенно другую ошибку.Вот сценарий, как это теперь
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
Когда вы подключились к базе данных Sybase из Access, какой драйвер вы использовали? Кроме того, похоже, что вы используете драйвер ODBC и указываете поставщика OLE DB. Вы пытались получить драйвер OLE DB? – TDavis