由于未选择活动仓库,对雪花数据库的查询不起作用

Posted

技术标签:

【中文标题】由于未选择活动仓库,对雪花数据库的查询不起作用【英文标题】:Query to Snowflake database isn't working because no active warehouse is selected 【发布时间】:2020-06-01 13:55:02 【问题描述】:

我能够通过 R 成功连接到 Snowflake 数据库,但我无法获取数据,因为没有选择活动仓库。以下是错误信息:

当前会话中未选择活动仓库。使用“使用仓库”命令选择一个活动仓库。

这是我正在使用的代码。

  con <- DBI::dbConnect(
    odbc::odbc(), 
    UID    = user, 
    PWD    = pass, 
    Server = host,
    Warehouse = 'YOUR_WAREHOUSE_NAME',
    Driver = "SnowflakeDSIIDriver",
    Role = role,
    Database = database,
    Autthenticator = "external browser"
  )

dbGetQuery(con, "SELECT * FROM MY_TABLE LIMIT 100")

我的连接和查询基于RStudio Community,但我没有任何运气。我还尝试在查询中使用“使用仓库 MY_WAREHOUSE”命令,但没有任何运气。

注意:我可以通过 Python 成功连接并查询数据,所以我认为这是 R 特定的问题。

【问题讨论】:

1) 可能你的角色没有使用这个仓库的权限。你确定你使用了正确的角色吗? 2) 如果这与 R 有关,您是否尝试将“USE WAREHOUSE MY_WAREHOUSE”语句作为单独的语句运行? (从 R 中)运行此命令的结果是什么? 1) 我使用的角色与我的 Python 连接相同。我还在 R 中切换了角色以进行检查,我遇到了同样的错误。 2)我也在我的查询中使用它作为单独的语句。 dbGetQuery(con, "SELECT * FROM MY_TABLE LIMIT 10", "USE WAREHOUSE MY_WAREHOUSE") 我收到以下错误 Error: nanodbc/nanodbc.cpp:1617: 57P03: No active warehouse selected in the current session。选择一个带有“使用仓库”的活动仓库 一些其他的尝试:1)如果你使用另一个仓库会发生什么? 2)这可能是仓库名称大小写的名称解析问题 - 因此,如果未将其定义为大写,则可能将您的引用包装在“”中 3)如果您确保启动 WH 会发生什么(恢复) 在从 R 启动连接之前(而不是让它尝试自动恢复) 嗨,迈克,我只能访问一个仓库(至少现在是这样)。我尝试了 2 但这似乎不起作用。你能详细说明#3吗?在从 R 建立连接之前,我将如何启动 WH?谢谢 我不确定这是否是唯一的问题,但您的代码中存在拼写错误。 “身份验证器”应该是“身份验证器”。如果您使用 SSO,则应该只需要该参数。 【参考方案1】:

我也遇到过这个问题。这可能不是最好的答案,因为我只是在测试一些开发代码(在 python 中),但我不得不发出:

GRANT USAGE ON WAREHOUSE my_warehouse TO ROLE writer_role;

我用来连接到 Snowflake 的用户是其中的成员,然后我能够写入表。

【讨论】:

【参考方案2】:
    恕我直言,如果 python 等效代码没问题,这似乎是一个 R 错误 您的角色可以分配一个默认仓库,可能是空白的,需要在连接时指定;并且 R 代码中的错误正在阻止它被设置?

【讨论】:

好的,睡了一夜之后,我想出了如何连接到正确的数据表。 RStudio 正在保存我的旧 Snowflake 连接字符串,因此每当我进行更改时,它都不会影响连接。所以我删除了所有连接字符串并使用了正确的。此外,当我使用密码和身份验证器时,似乎存在问题。当我只使用身份验证器时,没关系。但是当我同时使用两者时,我无法正确连接。 (我的用户电子邮件和用户 ID 是两个不同的电子邮件。这可能会影响它。)好消息是我现在可以连接。谢谢!

以上是关于由于未选择活动仓库,对雪花数据库的查询不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当前会话中未选择活动仓库。使用“使用仓库”命令选择一个活动仓库

雪花 ...Alter 表在雪花中的托管模式中不起作用

Snowflake METADATA$FILENAME 关键字在 snowsql(Unix 命令提示符)中不起作用,但在雪花 UI 中起作用

雪花 - 雪管天蓝色 blob - auto_ingest 不起作用

React Apollo 测试不起作用。查询数据总是未定义

雪花声明在程序中不起作用