繁体   English   中英

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

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

我正在尝试通过命令行使用 Windows 10 中的 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 创建 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"}

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

雪花配置对话框

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

“CONFIGSYSDSN:无法为‘SnowflakeDSIIDriver’驱动程序创建数据源:驱动程序的 ConfigDSN、ConfigDriver 或 ConfigTranslator 失败,错误代码为 -2147467259。”

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

在通过 PowerShell添加 OdbcDsn的情况下:

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

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

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

不是一个完整的解决方案,但文档提到了注册表设置位置。 因此,您可以手动完成,然后“读取”注册表设置集,然后将它们注入您的脚本中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM