Возникла достаточно интересная проблема.
Есть старый VBScript’ик, который соединяется с базой данных и забирает оттуда данные. Делает он это через драйвер, который ставится вместе с BDE.
Проблема… Нужно перенести этот скрипт из Windows Server 2003 на Windows Server 2012 R2. При попытке прямого запуска получаем ошибку — невозможно соединиться с базой. Более того, он даже не может создать объект.
Как решить это?
Что случилось? Почему работало на 2003 и не работает на 2012R2?
Драйвер, который используется для подключения к базе данных написан под x86 (WIN32) и не виден, и не работает под Windows x64, а Windows Server 2012R2 собственно и выпускается только под X64, редакции под x86 нет и не будет.
Как быть?
Я перепробовал несколько способов. Кое-что работает, но не совсем так как нужно. Как вариант запустить 32-х битную версию ODBC и там создать DSN, тогда да…. Работать будет, но опять же у меня возникла проблема при обращении из MSMS.
Можно заставить сам скрипт работать в режиме x86, для этого есть 2 пути
Запуск 32-битной версии CMD (Консоли)
Можно запустить 32-х битную версию консоли, а потом выполнить в ней скрипт. 32-х битная версия находится тут:
%windir%\SysWoW64\cmd.exe
И уже в ней выполнить скрипт, просто прописав путь до него в консоль.
Запуск Windows Script Host в режиме x86
Можно попросить систему выполнить скрипт в режиме x86 запустив самого исполнителя в этом режиме.
Windows Script Host x86 находится тут:
C:\windows\syswow64\wscript.exe
Таким образом скрипт можно выполнить так:
- Открываем обычный CMD (пуск -> Выполнить -> CMD.exe)
- Прописываем туда C:\windows\syswow64\wscript.exe <Путь до скрипта>
- Оно выполняется
Как сделать, что бы скрипт работал как при запуске самого файла скрипта?
На самом деле это бывает очень важно, когда нужно создать «ярлычок» пользователю что бы он его запускал.
Что бы сделать такой ярлычок нужно:
- Создать *.bat файл
- В нем прописать C:\windows\syswow64\wscript.exe <Путь до скрипта>
- Можно запустить. Тогда оно покажет окно командной строки и будет исполнять скрипт.
Супер, огромное спасибо, вы мне очень помогли.