problemas programaticamente adicionando ODBC DSN ao administrador ODBC no Windows

1

Estou trabalhando para tentar automatizar algumas configurações e, como parte disso, precisamos adicionar um DSN ODBC por meio de um script. O driver que estou tentando usar é o Cloudera Impala ODBC Connector, baixado de aqui . Todas as máquinas que rodarão rodarão o Windows, a maioria delas do Windows 8.1 ou 10. Eu testei tudo abaixo no Windows 7 (quando possível) e no Windows 10, com os mesmos resultados. Eu posso criar um DSN nesta máquina manualmente, assim o driver parece estar instalado corretamente. Eu também tentei tudo isso com DSNs de usuário e DSNs do sistema sem sorte.

De acordo com aqui , existem três maneiras de fazer isso. O primeiro é mexer com o registro diretamente, o que eu gostaria de evitar, se possível.

O segundo está usando o odbcconf. O problema é que quando executo o comando abaixo no Windows 7 e no Windows 10, aparece uma janela de configuração para o Administrador ODBC, mas nenhum dos valores que eu especifiquei foi preenchido. Se eu criar um DSN para o SQL Server, funciona, no entanto, parece ser específico do driver. Eu verifiquei duas vezes que estou corrigindo as coisas, mas nem mesmo o nome está definido. Veja a captura de tela abaixo para saber o que parece.

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

Captura de tela da janela que abre

O terceiro é usar um CmdLet Powershell, Add-OdbcDsn. Quando eu executo o seguinte comando para o SQL Server ou o Cloudera Impala, ele simplesmente trava, não retornando após 10 minutos. O uso de recursos do Powershell é essencialmente 0 e não vejo nenhuma atividade no sistema. Nenhum DSN aparece no Administrador ODBC.

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

Alguma idéia de como isso pode ser resolvido para que eu possa avançar?

    
por Dave McGinnis 28.11.2017 / 23:32

1 resposta

1

Então, como ninguém respondeu a essa pergunta, vou em frente e preencha o que acabei fazendo abaixo, para pessoas como @gimpy que podem estar procurando uma resposta semelhante.

Acabei indo apenas a rota de chaves de registro, com um arquivo .reg que é executado para adicionar as informações corretas de ODBC. Veja abaixo uma amostra do que eu coloquei no arquivo .reg para fazer isso funcionar.

Vou marcar esta resposta como a solução até / se alguém puder me dar uma resposta para uma das outras duas abordagens acima, o que eu consideraria preferível.

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" 
    
por 14.11.2018 / 17:15