我可以通过命令行在 Windows 中创建 Snowflake ODBC DSN 吗?

Can I create a Snowflake ODBC DSN in Windows via the command line?

我正在尝试通过命令行在 Windows10 中使用 Snowflake ODBC 驱动程序创建 64 位 ODBC 数据源(用于包含在脚本中)。这是否可以使用命令行工具(例如 odbcconf.exe 或 PowerShell cmdlet(例如 Add-OdbcDsn),如果可以, 谁能提供一个他们曾经这样做过的有效语法示例?

我过去曾使用其他 ODBC 驱动程序成功完成此操作,例如:

Oracle Instant Client 通过 odbcconf.exe:

C:\Windows\System32\odbcconf.exe /A {CONFIGSYSDSN "Oracle in instantclient64" "DSN=Example_DSN|Server=Example_Server"}

SQL 服务器通过 Add-OdbcDsn:

Add-OdbcDsn -Name "Example_DSN" -DriverName "SQL Server" -DsnType "System" -Platform "32-bit" -SetPropertyValue @("Server=Example_Server","Trusted_Connection=Yes","Database=Example_Database")

但是,我使用类似的命令使用 Snowflake ODBC 驱动程序创建 DSN 一直没有成功。

我正在使用以下文章作为指导:https://docs.snowflake.com/en/user-guide/odbc-windows.html

作为参考,我可以通过 “ODBC 数据源管理器(64 位)” GUI 通过 selecting 创建 DSN “SnowflakeDSIIDriver” 驱动程序,并在 “Snowflake 配置对话框” window 中填写数据源、用户和服务器属性,所以我知道可以创建使用此驱动程序的 DSN;我只是不知道如何通过命令行来完成它。

对于这些 odbcconf.exe 命令中的任何一个:

C:\Windows\System32\odbcconf.exe /A {CONFIGSYSDSN "SnowflakeDSIIDriver" "DSN=Example_DSN"}

C:\Windows\System32\odbcconf.exe /A {CONFIGSYSDSN "SnowflakeDSIIDriver" "DSN=Example_DSN|Server=EXAMPLE.us-east-1.snowflakecomputing.com Database=Example_Database Schema=Example_Schema Warehouse=Example_WH Role=Example_Role Tracing=4 Authenticator=externalbrowser"}

弹出 “Snowflake 配置对话框” windows 而不是创建 DSN,就好像我试图通过 创建 DSN “ODBC 数据源管理器(64 位)” GUI。只有 "Data source" 字段填充了我放在 "DSN​​=" 之后的值。所有其他字段都是空白的,无论我尝试在命令中传递多少附加属性:

Snowflake Configuration Dialog

如果我在弹出对话框 window 时手动添加用户和服务器,然后单击“确定”,DSN 会创建;但是,我也收到一条错误消息(如果我 select 在对话框 window 上也“取消”,我也会收到同样的错误):

"CONFIGSYSDSN: Unable to create a data source for the 'SnowflakeDSIIDriver' driver: Driver's ConfigDSN, ConfigDriver, or ConfigTranslator failed with error code -2147467259."

(显然,这并不能解决问题,因为我的目的是让命令单独创建 DSN,而无需用户交互。)

在通过 PowerShell Add-OdbcDsn 的情况下:

Add-OdbcDsn -Name "Example_DSN" -DriverName "SnowflakeDSIIDriver" -DsnType "System" -Platform "64-bit"

命令似乎无限期挂起,直到我取消它。我从来没有看到任何可见的错误消息,而且我没有得到“雪花配置对话框” window.

有没有人有任何我可以尝试的建议,and/or有没有人确定这是否可行,或者 Snowflake ODBC 驱动程序是否不支持它?

不是完整的解决方案,但 Doc's 提到了注册表设置位置。所以你可以手动完成,然后“读取”注册表设置集,然后将它们注入你的脚本中。