存储过程在单个调用语句中执行良好,但在从任务或另一个 SP 调用时失败

Stored Procedures executing fine with individual call statement but failing while calling from either task or another SP

将 QUERY_TIMEOUT 参数设置为 1 小时,如果 运行 超过 1 小时,SP 执行将自动取消。只有在通过任务或通过另一个 SP 调用它时才会发生这种情况。在工作表或 snowsql CLI 中单独调用时,运行 超过 1 小时即可完成。

我有一个任务 T1 运行 一个调用实际过程 SP1 的包装过程 W1。 W1 和 SP1 都失败并出现错误,例如由于运行时超过超时限制而取消了执行。

但直接 运行 在工作表中,调用 SP1() 根本没有失败,但即使在运行 2 小时后也能完成。

知道为什么会这样吗?超时参数是否影响所有查询,因为它似乎不是这样?

确认超时参数。从任务开始

show parameters like '%TIMEOUT%' in task <task_name>;

任务的默认值为 3600000(1 小时)。根据您的需要调整:

ALTER TASK <task_name> SET USER_TASK_TIMEOUT_MS = <new_val>;

其他需要考虑的 TIMEOUT 参数:

show parameters like '%TIMEOUT%' in account;
show parameters like '%TIMEOUT%' in session;
show parameters like '%TIMEOUT%' in user <user_name>;
show parameters like '%TIMEOUT%' in warehouse <warehouse_name>;