存储过程在单个调用语句中执行良好,但在从任务或另一个 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>;
将 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>;