有没有方法可以覆盖Azure DB for PostgreSQL上的服务器配置“ statement_timeout”?

时间:2019-03-30 02:12:45

标签: npgsql azure-postgresql

在PostgreSQL下的Azure门户中,服务器配置statement_timeout控制以下内容。

  

“设置任何语句的最大允许持续时间(以毫秒为单位)。   0将其关闭。”

似乎没有一种方法可以覆盖该设置。我们使用Npgsql的.NET Provider并尝试在连接字符串上设置timeout = 0和命令timeout = 0来查看将被覆盖的内容,但似乎对超时没有影响。我们不想禁用它或将其设置为较大的间隔,但是我们有一些存储过程会运行很长时间,并且希望在每个语句的基础上进行设置。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在事务级别设置statement_timeout。在下面的示例中,我开始一个事务,设置超时,调用postgres的sleep函数,然后标记事务结束。

BEGIN; SET LOCAL statement_timeout = 2000; SELECT pg_sleep(3); COMMIT;

请注意,由于睡眠功能超时(标记为ERROR),因此事务将回滚。

或者,您可以仅使用SET在会话级别设置statement_timeout。

关于SETSET LOCAL的信息:https://www.postgresql.org/docs/10/sql-set.html

相关问题