R Workbench通过Okta连接Snowflake报错及配置问题咨询
问题1:外部浏览器验证场景是否需要提供密码
不需要在连接代码中填写密码。触发连接请求后会自动唤起系统默认浏览器跳转至Okta登录页,完成Active Directory校验后授权信息会自动回传给R会话,直接完成连接,无需手动传入密码参数。
问题2:连接报错的原因及修复方案
你遇到的all(has_names(args)) is not TRUE报错,以及连接失败的问题,是以下几个错误共同导致的:
- 参数未命名:
DBI::dbConnect除了前两个参数(ODBC驱动对象、DSN名称)之外,所有自定义参数都必须指定参数名,你之前代码里的JDBC链接串、用户名都属于未命名参数,触发参数校验报错 - 配置逻辑错误:你使用的是ODBC驱动而非JDBC驱动,不需要传入JDBC格式的链接串,Okta外部浏览器验证的配置项写法完全错误
- 符号格式错误:后续修改的代码里时区参数使用了中文全角引号,会触发语法错误,需要替换为英文半角引号
正确的ODBC连接代码(使用现有DSN配置)
con <- DBI::dbConnect(odbc::odbc(), "SnowflakePRD", uid = "username@company.com", authenticator = "externalbrowser", timezone = "UTC", timezone_out = "UTC" )
如果你的DSN没有提前配置完整Snowflake连接信息,可以手动补全必填参数:
con <- DBI::dbConnect(odbc::odbc(), Driver = "Snowflake", Server = "company.snowflakecomputing.com", uid = "username@company.com", authenticator = "externalbrowser", Warehouse = "你的计算仓库名称", Database = "你的数据库名称", Schema = "你的Schema名称", Role = "你的Snowflake角色名称", timezone = "UTC", timezone_out = "UTC" )
内容的提问来源于stack exchange,提问作者Preethi Narayanan
相关产品推荐
相关产品推荐

