2016-12-07 6 views
0

Я подключаюсь к mysql, используя asp (vbscript), но я не знаю версию драйвера ODBC. У меня нет доступа к администрированию сервера и реестру Windows так:Как протестировать версию драйвера ODBC Mysql программно

1- Я хочу найти версию ODBC программно (или, возможно, через команду sql в phpmyadmin?).

2- Однако, как возможное решение, я думаю, что использование циклов соединения может помочь. Как я могу пройти ошибки и найти подходящую строку соединения? есть ли обратный вызов или False/True возврат из строк подключения?

возможные строки подключения:

set objcon = Server.CreateObject ("ADODB.Connection")  
    objcon.connectionstring = "Driver={MySQL ODBC 5.2 UNICODE Driver};Server=****;Database=****;User=****;Password=****;Option=3;" 
    objcon.connectionstring = "Driver={MySQL ODBC 5.1 Driver};Server=****;Database=****;User=****;Password=****;Option=3;" 
    objcon.connectionstring = "Driver={MySQL ODBC 3.51 Driver};Server=****;Database=2558_academy;User=****;Password=****;Option=3;" 
+0

Вы уже пробовали решение с помощью реестра через winmgmt? Насколько мне известно, это не требует эскалации привилегий и требует только права на чтение только в реестре. –

ответ

1
set filepath=%~f1 
set file=%filepath:\=\\% 
wmic datafile where name^="%file%" get version|findstr /i /v /c:"version" 
echo %errorlevel% 

Пакетный файл с помощью WMI, который любой COM язык можно использовать. Передайте файл драйвера в качестве параметра в пакетный файл.

1

Если вы хотите подключиться к базе данных MySQL без точных знаний по установленным драйверам, вы должны перебрать список возможных строк подключения и попробовать их, пока первый из них не удастся.

Имея открытое соединение, вы можете либо разобрать строку соединения, либо использовать подходящие свойства соединения.

В коде:

Dim oCnct : Set oCnct = CreateObject("ADODB.Connection") 
    Dim sDrv 
    For Each sDrv In Split("Complete nonsense|MySQL ODBC 5.1 Driver|MySQL ODBC 9.9 Driver", "|") 
     WScript.Echo sDrv 
    On Error Resume Next 
     oCnct.Open Replace("Driver={§};Server=gent;Database=pi;User=pa;Password=po;Option=3;", "§", sDrv) 
     If 0 = Err.Number Then 
     Exit For 
     Else 
     WScript.Echo "Error:", Err.Description 
     End If 
    On Error Goto 0 
    Next 
    If oCnct.State = adStateOpen Then 
    WScript.Echo "Connected to MySQL using", sDrv 
    Dim sProp 
    For Each sProp In Split("Driver Version|Driver ODBC Version", "|") 
     WScript.Echo oCnct.Properties(sProp).Name & ":", oCnct.Properties(sProp).Value 
    Next 
    oCnct.Close 
    Else 
    WScript.Echo "Failed to connected to MySQL" 
    End If 

выход:

Complete nonsense 
Error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 
MySQL ODBC 5.1 Driver 
Connected to MySQL using MySQL ODBC 5.1 Driver 
Driver Version: 05.01.0005 
Driver ODBC Version: 03.51 
0

Хотя вы не можете быть в состоянии открыть реестр, вы можете запросить через службу winmgmts. Вы можете изменить по своему вкусу ... дайте мне знать, если это сработает. В противном случае может быть

for each key in split("SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers,x86|SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers,x64", "|") 
    strKeyPath=split(key, ",")(0) 
    arch=split(key, ",")(1) 
    Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv") 
    objRegistry.EnumValues &H80000002, strKeyPath, arrValueNames, arrValueTypes 
    For i = 0 to UBound(arrValueNames) 
     strValueName = arrValueNames(i) 
     objRegistry.GetStringValue &H80000002,strKeyPath,strValueName,strValue 
     Wscript.Echo "[" & arch & "] "& strValue & " " & arrValueNames(i) 
    Next 
Next 

Это может быть проще и программно обнаружить, если вы дали более подробную информацию о установках для самого разъема в файловой системе.

C:\Windows\System32\odbcad32.exe - GUI tool for seeing the drivers 
cd /d "C:\Program Files" 
dir /s /b *odbc*dll | find /I "MySQL" 

После того, как вы нашли правильные Odbc для MySQL библиотеки DLL, обычно можно соскрести версию драйвера от верхней строки в файле readme.txt в пути к папке.

Смежные вопросы