0

我想执行多个异步查询。但是,它会不断干扰彼此的 SQL 命令。

例如,查询 A 需要使用架构 A,查询 B 需要使用架构 B,但是触发了使用架构 B 的命令,然后在其后运行查询 A,导致查询 A 失败。

示例查询 A:

  1. 使用模式测试;
  2. 从 TABLE_A 中选择 *;

示例查询 B:

  1. 使用模式测试_2;
  2. 从表_B中选择*;

在我的情况下,当在同一个连接中异步触发它们时发生的事情是它像这样运行:

  1. 使用模式测试;
  2. 从表_B中选择*;

这会导致查询失败,因为 TABLE_B 在模式 TEST 中不存在。

雪花是否有任何方式触发多个异步查询而不会相互干扰?除了连接之外,再次运行查询和断开连接。

4

1 回答 1

0

问题似乎是您正在重用连接,并且连接具有状态。每次设置变量或USE SCHEMA.

可能的解决方案:

  • 不要重复使用连接。而是为每个新的异步查询集创建一个新连接。然后你可以在里面设置不同的模式。

  • 如果您想使用相同的连接,请不要使用USE SCHEMA. 而是将模式硬编码到查询中,如from db.schema.table.

  • 使用恰好是无状态的 SQL API:https ://docs.snowflake.com/en/developer-guide/sql-api/index.html

如需进一步帮助,请提出新问题,并确保分享更多代码以及您使用的连接器和语言。

于 2022-02-18T05:31:33.723 回答