我正在尝试自动化一些配置,作为其中的一部分,我们需要通过脚本添加 ODBC DSN。我尝试使用的驱动程序是 Cloudera Impala ODBC 连接器,从这里下载。它将运行的所有机器都将运行 Windows,其中大多数是 Windows 8.1 或 10。我已经在 Windows 7(如果可能)和 Windows 10 上测试了以下所有内容,结果相同。我可以在这台机器上手动创建一个 DSN,所以驱动程序似乎安装正确。我还用用户 DSN 和系统 DSN 尝试了所有这些,但没有运气。
根据这里,有三种方法可以做到这一点。第一个是直接弄乱注册表,如果可能的话,我想避免这种情况。
第二个是使用odbcconf。问题是,当我在 Windows 7 和 Windows 10 上运行以下命令时,它会出现一个 ODBC 管理员的配置窗口,但我指定的值都没有填写。如果我为 SQL Server 创建一个 DSN,这个但是,确实有效,因此它似乎是特定于驱动程序的。我已经仔细检查过我设置正确,但甚至名称都没有设置。请参阅下面的屏幕截图以了解它的外观。
odbcconf CONFIGSYSDSN "Cloudera ODBC Driver for Impala" "DSN=Testing|Server=server"
第三种是使用Powershell CmdLet,Add-OdbcDsn。当我为 SQL Server 或 Cloudera Impala 运行以下命令时,它只是挂起,即使 10 分钟后也不会返回。Powershell 的资源使用量基本上为 0,而且我没有看到系统上有任何活动。没有 DSN 显示在 ODBC 管理器中。
Add-OdbcDsn -Name "testing" -Driver "SQL Server" -DsnType "System"
关于如何解决其中任何一个问题以便我继续前进的任何想法?
因此,由于没有人回答这个问题,我将继续填写我最终在下面所做的事情,供@gimpy 等可能正在寻找类似答案的人使用。
我最终只是使用注册表项的路线,运行一个 .reg 文件以添加正确的 ODBC 信息。请参阅下面的示例,了解我在 .reg 文件中放置的内容以使其工作。
我将把这个答案标记为解决方案,直到/如果有人能够给我一个回答上述其他两种方法之一的答案,我会觉得这是更可取的。