web-dev-qa-db-ja.com

プログラムでODBC DSNをODBC Windows上の管理者に追加する問題

私はいくつかの構成を自動化しようと取り組んでおり、その一環として、スクリプトを介してODBC DSNを追加する必要があります。私が使用しようとしているドライバーは、 ここ からダウンロードされたCloudera Impala ODBCコネクターです。これが実行されるすべてのマシンはWindowsを実行し、そのほとんどはWindows 8.1または10です。以下のすべてをWindows 7(可能な場合)とWindows 10でテストしたところ、同じ結果が得られました。このマシンでDSNを手動で作成できるので、ドライバーは正しくインストールされているようです。また、ユーザーDSNとシステムDSNの両方でこれらすべてを試しましたが、うまくいきませんでした。

here によると、これを行うには3つの方法があります。 1つ目は、レジストリを直接操作することです。これは、可能であれば避けたいと思います。

2つ目は、odbcconfの使用です。問題は、Windows7とWindows10の両方で以下のコマンドを実行すると、ODBC Administratorの構成ウィンドウが表示されますが、指定した値が入力されていないことです。 SQL Server、これは機能しますが、ドライバー固有のようです。正しく設定されていることを再確認しましたが、名前すら設定されていません。それがどのように見えるかについては、以下のスクリーンショットを参照してください。

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

開くウィンドウのスクリーンショット

3つ目は、Powershell CmdLet、Add-OdbcDsnを使用することです。 SQLServerまたはClouderaImpalaのいずれかに対して次のコマンドを実行すると、ハングし、10分経っても戻りません。 Powershellのリソース使用量は基本的に0であり、システムでアクティビティが発生していません。 ODBC AdministratorにDSNが表示されません。

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

私が前進できるように、これらのいずれかをどのように解決できるかについてのアイデアはありますか?

1
Dave McGinnis

誰もこの質問に答えなかったので、@ gimpyのように同様の答えを探している人のために、私が最終的に行ったことを以下に記入します。

正しいODBC情報を追加するために実行される.regファイルを使用して、レジストリキーのルートをたどるだけで終わりました。regファイルに入れたもののサンプルについては、以下を参照してください。これを機能させます。

私は、誰かが上記の他の2つのアプローチのいずれかに対して私に答えを与えることができるまで、または誰かが私に答えを与えることができるまで、この答えを解決策としてマークします。

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" 
1
Dave McGinnis