我正在尝试使用一种名为AutoTag的产品进行一些非常基本的查询。
我的PostgreSQL是本地安装的(非常结实的机器、SSD、16GB RAM等等)。
其中一张表有4000多万条记录(而且还在增长)。我正在尝试做一个简单的查询,当从Postgres Admin工具完成时,运行需要4-5分钟。
我的连接字符串尝试是以下的变体:
端口=5432命令超时=5000;TIMEOUT=1024;POOLING=真;最小池大小=1;最大池大小=20命令超时=20;兼容=2.2.0.0;HOST=localhost;DATABASE=历史数据;用户ID=postgres;PASSWORD=此处的密码
连接器(Windows环境)为:NpgsqlDdexProvider-2.2.0-VS2013。。。在以下位置找到:https://github.com/npgsql/Npgsql/releases(使用某人在同一网站提供的"可安装"版本,因为AutoTag制造商WIndward无法绕过"组装"带来的烦恼)
每次尝试使用AutoTag从Excel中进行查询都会导致appx明显超时20-30秒,我将粘贴到下面,尽管上面有我的连接字符串(尝试了timeout=0,不会连接…尝试了没有timeout,没关系)。
救命?!我显然在连接方面受到限制——我必须将64位Excel与64位版本的AutoTag一起使用,而我可以将FINE与Crystal Reports一起使用的另一个连接器将无法工作(文件名psqlodbc_08_04_0200)。
异常堆栈:
错误:57014:由于语句超时而取消语句(DataSourceException)
错误:57014:由于语句超时而取消语句(NpgsqlException)
AutoTag版本:13.1.12.0
Office:15(64位),EXCEL
Windows:Microsoft Windows NT 6.1.7601 Service Pack 1(64位),GC内存:53792440
堆栈跟踪:
异常:net.windward.env.DataSourceException
消息:错误:57014:由于语句超时而取消语句
Stack: at net.windward.xmlreport.a.a(ArrayList A_0, e A_1, ArrayList A_2, ProcessReportAPI A_3)
at net.windward.xmlreport.ProcessReport.processData(Map dataProviders)
at net.windward.xmlreport.ProcessReport.processData(DataSourceProvider datasourceProvider, String datasourceName)
at WindwardArrow.net.windward.arrow.tools.d.a(b A_0, a A_1, a A_2, DrillDownInfo A_3, String A_4, Stream A_5, Stream A_6)
at AutoTagCore.net.windward.autotag.controls.reports.c.a()
异常:Npgsql.NpgsqlException
消息:错误:57014:由于语句超时而取消语句
Stack: at Npgsql.NpgsqlState.<ProcessBackendResponses>d__0.MoveNext()
at Npgsql.ForwardsOnlyDataReader.GetNextResponseObject(Boolean cleanup)
at Npgsql.ForwardsOnlyDataReader.GetNextRow(Boolean clearPending)
at Npgsql.ForwardsOnlyDataReader.Read()
at System.Data.Common.DbEnumerator.MoveNext()
at WindwardReportsDrivers.net.windward.datasource.ado.AdoDataSource.AdoNode.AdoIterator.next()
最终更新:根据提供的解决方案,突出显示上面连接字符串中的问题。
我认为正好是20秒,因为您的连接字符串中有两次COMMANDTIMEOUT
,第二次设置为20秒。