由于未选择活动仓库,无法对Snowflake数据库进行查询。

12
我能成功通过R连接到Snowflake数据库,但是我无法获取数据,因为没有选择活动仓库。以下是错误消息:
“当前会话中未选择活动仓库。请使用'use warehouse'命令选择一个活动仓库。”
这是我正在使用的代码。
  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社区的这个帖子建立了我的连接和查询,但是我没有成功。我还尝试在我的查询中使用“use warehouse MY_WAREHOUSE”命令,但没有成功。

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


  1. 也许您的角色没有使用此仓库的特权。您确定使用了正确的角色吗?
  2. 如果这与 R 有关,您是否尝试过将“USE WAREHOUSE MY_WAREHOUSE”语句作为单独语句运行?从 R 运行此命令的结果是什么?
- Gokhan Atil
  1. 我正在使用与我的Python连接相同的角色。我也在R中切换了角色以进行检查,但出现了相同的错误。
  2. 我也将其作为单独语句在我的查询中使用。dbGetQuery(con, "SELECT * FROM MY_TABLE LIMIT 10", "USE WAREHOUSE MY_WAREHOUSE")我收到以下错误_错误:nanodbc / nanodbc.cpp:1617:57P03:当前会话中未选择活动仓库。使用“use warehouse”选择活动仓库_。
- trevin_flick
嗨,Mike,我现在只能访问一个仓库。我尝试了两个,但好像不起作用。你能详细解释一下第三点吗?我该如何在建立与 R 的连接之前启动 WH?谢谢。 - trevin_flick
很好发现,Greg。不幸的是,这里只是我的拼写出了问题。:( - trevin_flick
嘿,迈克,我找到了连接的方法。请看我的评论。谢谢! - trevin_flick
显示剩余3条评论
2个回答

12

我也遇到了这个问题。我的回答可能不是最好的,因为我只是在测试一些 Python 开发代码,但是我需要发出命令:

GRANT USAGE ON WAREHOUSE my_warehouse TO ROLE writer_role;

我使用的用户是Snowflake的成员之一,因此我能够向表中写入数据。


0
  1. 在我看来,如果Python等效代码正常,那么似乎是R的一个错误。
  2. 您的角色可以分配默认仓库,也许它是空白的,需要在连接时指定;而且R代码中的一个错误正在阻止它被设置?

好的,经过一晚上的睡眠,我找到了连接正确数据表的方法。RStudio保存了我的旧Snowflake连接字符串,所以每当我进行更改时,它不会影响连接。因此,我删除了任何连接字符串并使用了正确的连接字符串。另外,当我同时使用密码和验证器时似乎存在问题。当我只使用验证器时,一切正常。但是当我同时使用两者时,无法正确连接。(我的用户电子邮件和用户ID是两个不同的电子邮件。这可能会影响它。)好消息是我现在可以连接了。谢谢! - trevin_flick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接