我已经解决了这个问题一段时间了,这就是我用来强制连接超时的场景:
在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 。
告诉用户他没有结果"当他真正得到超时错误时太糟糕了。
有什么想法吗?
答案 0 :(得分:0)
Postgres OLEDB提供程序返回超时错误。它应该导致从Fill方法抛出异常。如果没有,那可能是一个错误。
您可以增加Extended Propeties中的超时,例如:COMMAND_TIMEOUT = 900;使它15分钟。它将影响当前OLEDB会话中的所有查询。