我试图使用一个名为AutoTag的产品进行一些非常基本的查询。
我的PostgreSQL是本地安装的(非常强大的机器,SSD,16 is内存,等等)。
其中一张表格有4,000万多条记录(而且还将继续增长)。我试图做一个简单的查询,当从Postgres管理工具完成时,运行需要4到5分钟。
我的连接字符串尝试是以下的变体:
PORT=5432;CommandTimeout=5000;TIMEOUT=1024;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;COMMANDTIMEOUT=20;COMPATIBLE=2.2.0.0;HOST=localhost;DATABASE=HistoricalData;USER ID=postgres;PASSWORD=passwordhere
连接器(Windows环境)是:NpgsqlDdexProvider-2.2.0-VS 2013 ...found at:https://github.com/npgsql/Npgsql/releases (使用在同一站点提供的“可安装”版本,原因是AutoTag制造商WIndward无法处理的“程序集”烦扰)
每次尝试在Excel中使用AutoTag 查询,都会在appx 20-30秒的中出现明显的超时,尽管上面的连接字符串(尝试了TIMEOUT=0,不会连接),但我会粘贴到下面。不尝试超时,没关系)。
救命?!显然,我在连接性方面受到了限制--我必须在64位版本的AutoTag中使用64位Excel,而另一个我可以在水晶报告中很好地使用的连接器将无法工作(文件名psqlodbc_08_04_0200)。
异常堆栈:
ERROR: 57014: canceling statement due to statement timeout (DataSourceException) ERROR: 57014: canceling statement due to statement timeout (NpgsqlException) AutoTag版本: 13.1.12.0
办公室: 15 (64位),EXCEL
Windows: Microsoft Windows NT 6.1.7601 Service Pack 1(64位),GC内存: 53,792,440
堆栈跟踪:
例外: 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()最终更新:根据所提供的解决方案突出显示上面的连接字符串中的问题。
发布于 2014-09-16 20:30:14
我要说的是,由于连接字符串中有两次COMMANDTIMEOUT,而第二个字符串设置为20秒,所以确切地说是20秒。
https://stackoverflow.com/questions/25877613
复制相似问题