Назад | Перейти на главную страницу

Проблемы с программным добавлением ODBC DSN к администратору ODBC в Windows

Я пытаюсь автоматизировать некоторую конфигурацию, и как часть этого нам нужно добавить ODBC DSN через сценарий. Я пытаюсь использовать драйвер Cloudera Impala ODBC Connector, загруженный с Вот. Все машины, на которых это будет работать, будут работать под управлением Windows, большинство из них - Windows 8.1 или 10. Я протестировал все нижеприведенное на Windows 7 (где это возможно) и Windows 10 с теми же результатами. Я могу создать DSN на этом компьютере вручную, поэтому кажется, что драйвер установлен правильно. Я также пробовал все это как с пользовательскими, так и с системными DSN, но безуспешно.

В соответствии с Вот, есть три способа сделать это. Первый - это вмешательство напрямую в реестр, чего я бы по возможности избегал.

Второй - с помощью odbcconf. Проблема в том, что когда я запускаю команду ниже как в Windows 7, так и в Windows 10, появляется окно конфигурации для администратора ODBC, но ни одно из указанных мной значений не заполняется. Если я создаю DSN для SQL Server, это работает, однако, похоже, это зависит от драйвера. Я дважды проверил, что все настраиваю правильно, но даже имя не устанавливается. Смотрите на снимок экрана ниже, как это выглядит.

odbcconf CONFIGSYSDSN "Cloudera ODBC Driver for Impala" "DSN=Testing|Server=server"

Скриншот открывающегося окна

Третий - использовать Powershell CmdLet, Add-OdbcDsn. Когда я запускаю следующую команду для SQL Server или Cloudera Impala, она просто зависает и не возвращается даже через 10 минут. Использование ресурсов Powershell по существу равно 0, и я не наблюдаю никакой активности в системе. В администраторе ODBC не отображается DSN.

Add-OdbcDsn -Name "testing" -Driver "SQL Server" -DsnType "System"

Есть идеи, как решить любую из этих проблем, чтобы я мог двигаться дальше?

Так как никто не ответил на этот вопрос, я собираюсь продолжить и заполнить ниже то, чем я закончил, для таких людей, как @gimpy, которые могут искать аналогичный ответ.

В итоге я просто пошел по маршруту ключей реестра с файлом .reg, который запускается для добавления правильной информации ODBC. Ниже приведен образец того, что я поместил в файл .reg, чтобы эта работа работала.

Я собираюсь отметить этот ответ как решение до тех пор, пока / если кто-то не сможет дать мне ответ на один из двух других подходов, указанных выше, который я считаю предпочтительным.

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources] 

"Non-Prod Impala Connection"="Cloudera ODBC Driver for Impala" 



[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\Non-Prod Impala Connection] 

"AllowHostNameCNMismatch"="1" 

"AllowSelfSignedServerCert"="1" 

"AsyncExecPollInterval"="10" 

"AuthMech"="1" 

"AutoReconnect"="1" 

"CheckCertRevocation"="1" 

"DelegateKrbCreds"="1" 

"DelegationUID"="" 

"DESCRIPTION"="" 

"Driver"="Cloudera ODBC Driver for Impala" 

"EnableSimulatedTransactions"=0 

"Host"="<ImpalaHost>" 

"KrbFQDN"="_HOST" 

"KrbRealm"="<Domain>" 

"KrbServiceName"="impala" 

"LCaseSspKeyName"="" 

"Port"="21050" 

"RowsFetchedPerBlock"="10000" 

"Schema"="<Database>" 

"ServicePrincipalCanonicalization"="1" 

"SocketTimeout"="30" 

"SSL"="1" 

"StringColumnLength"="32767" 

"TrustedCerts"="<CertificatePath>\rootca.cert.pem" 

"TSaslTransportBufSize"="1000" 

"UID"="" 

"UseKeytab"="0" 

"UseNativeQuery"="0" 

"UseOnlySSPI"="0" 

"UseSASL"="1" 

"UseSQLUnicodeTypes"="0" 

"UseSystemTrustStore"="1"