在PostgreSQL下的Azure门户中,服务器配置statement_timeout控制以下内容。
“设置任何语句的最大允许持续时间(以毫秒为单位)。 0将其关闭。”
似乎没有一种方法可以覆盖该设置。我们使用Npgsql的.NET Provider并尝试在连接字符串上设置timeout = 0和命令timeout = 0来查看将被覆盖的内容,但似乎对超时没有影响。我们不想禁用它或将其设置为较大的间隔,但是我们有一些存储过程会运行很长时间,并且希望在每个语句的基础上进行设置。
谢谢。
答案 0 :(得分:0)
您可以在事务级别设置statement_timeout。在下面的示例中,我开始一个事务,设置超时,调用postgres的sleep函数,然后标记事务结束。
BEGIN; SET LOCAL statement_timeout = 2000; SELECT pg_sleep(3); COMMIT;
请注意,由于睡眠功能超时(标记为ERROR
),因此事务将回滚。
或者,您可以仅使用SET
在会话级别设置statement_timeout。
关于SET
和SET LOCAL
的信息:https://www.postgresql.org/docs/10/sql-set.html