默认忽略PostgreSQL OLEDB提供程序超时错误

时间:2016-03-14 18:18:41

标签: c# postgresql oledb

我已经解决了这个问题一段时间了,这就是我用来强制连接超时的场景:

在PostgreSQL中我改变了 postgres.conf ,将其超时设置为10毫秒。

statement_timeout = 10

以下是重要的代码:

var conn = new OleDbConnection(connectionString);
var da = new OleDbDataAdapter(sql, conn);
var dt = new DataTable();
var result = da.Fill(dt);

以下是连接字符串的内容:

"Provider=PGNP.1;Password=****;Persist Security Info=True;User ID=****;Initial Catalog=****;Data Source=localhost;Extended Properties=\"SSL=allow;\""

超时发生时,不会抛出任何错误或异常,dt.Rows.Count显示 0

当我将postgres.conf文件更改回statement_timeout = 0(禁用它)时,dt.Rows.Count的结果大于 0

告诉用户他没有结果"当他真正得到超时错误时太糟糕了。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Postgres OLEDB提供程序返回超时错误。它应该导致从Fill方法抛出异常。如果没有,那可能是一个错误。

您可以增加Extended Propeties中的超时,例如:COMMAND_TIMEOUT = 900;使它15分钟。它将影响当前OLEDB会话中的所有查询。