SQL0666 - SQL查询超出指定的时间限制或存储限制

Isa*_*vin 8 c# db2 odbc ssis dbcommand

我定期使用Odbc连接字符串调用DB2数据库时收到此错误消息.我已经尝试将DbCommand对象的CommandTimeout设置为多个值,但我仍然收到以下错误.

SQL0666 - SQL查询超出指定的时间限制或存储限制.

是否有一个技巧来阻止错误输出.这很奇怪,因为相同的查询有时会起作用,有时会超时.任何帮助,将不胜感激.谢谢!

kit*_*ite 15

我已经尝试将DbCommand对象的CommandTimeout设置为多个值

我设置DbCommand.CommandTimeout = 0,这修复了超时错误


RLH*_*RLH 6

风筝的答案是正确的,但是,我想在SQL Server集成服务(SSIS)项目中搜索此相同错误消息的修复程序后,在找到此问题和答案后分享我的观察/经验.

今天早些时候,我的一个SSIS软件包开始在其中一个步骤上收到此错误.经过一些研究后,我发现我的软件包在DataReader Source通过ODBC连接到iSeries数据库的对象上失败了.我不确定这是ODBC错误,还是iSeries/ODBC数据库驱动程序中的错误,但错误消息完全相同.

对我来说,真正奇怪的是我可以在MS Access中的链接表中浏览数据,该表通过相同的ODBC连接进行连接,我也可以MAKE TABLE在Access中运行相同数据集的操作而不会有任何问题.在搜索错误消息后,我发现了这个Q&A.这个提示也适用于SSIS包.

要在SSIS中修复此问题,您需要在Microsoft BIDS设计器中打开您的包.接下来,打开关联Data Flow Task,然后选择DataReader Source遇到超时的对象.

您的DataReader Source对象具有一个也被命名的属性CommandTimeout.将其设置为0(而不是默认值30)应解决问题.在验证超时是问题之后,我将超时设置为60并重新执行该步骤.一分钟超时解决了问题.

值得注意的是,将CommandTimeout所有DataReader Source对象的值更新为可能很诱人0.不建议这样做.相反,保持超时并将限制增加到相当慷慨的价值.将它们加倍,就像我一样,或者给出一个更加慷慨的5-10分钟超时值.

超时属性存在是有原因的.您可以为应用程序提供超时超时,但如果应用程序根本没有超时,那么您的应用程序可能会在数据库引擎中出现问题导致该步骤永远无法执行的可能性!这可能不太可能,但并非不可能.

保持安全并适当调整您的超时.