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

10
定期地,在使用 Odbc 连接字符串连接 DB2 数据库时,我会遇到以下错误消息。我已尝试将 DbCommand 对象的 CommandTimeout 设置为多个值,但仍然会得到以下错误。

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

有什么诀窍可以让这个错误停止出现呢?这很奇怪,因为相同的查询有时会起作用,有时会超时。感谢任何帮助!谢谢!

@Issac Levin,我删除了 .Net 标签并添加了 SSIS 标签,以便更广泛的受众可以找到和使用这个问答。这适用于 SSIS 包,因为这是相同的错误,但修复它与在 .Net/C# 项目中修复它略有不同。 - RLH
3个回答

15

我尝试设置 DbCommand 对象的 CommandTimeout 属性为多个值

我将 DbCommand.CommandTimeout 设置为 0,这解决了超时错误


8
Kite的回答是正确的,但在查找解决此SQL Server集成服务(SSIS)项目中相同错误消息的方法时,我想分享我的观察和经验。今天早些时候,我的一个SSIS包在其中一步上开始收到此错误。经过一些研究,我发现我的包在连接到通过ODBC连接到iSeries数据库的DataReader Source对象上失败了。我不确定这是否是一个ODBC错误,还是iSeries/ODBC DB驱动程序内部的错误,但错误消息完全相同。对于我来说,真正奇怪的是,我可以浏览与同一ODBC连接相连的MS Access中的链接表中的数据,并且我也可以在Access中从同一数据集运行MAKE TABLE操作而没有任何问题。在搜索错误消息后,我找到了这个问答。这个提示也适用于SSIS包。要在SSIS中修复这个问题,您需要在Microsoft BIDS设计器中打开您的包。接下来,打开相关的Data Flow Task,然后选择正在经历超时的DataReader Source对象。您的DataReader Source对象具有一个同样命名为CommandTimeout的属性。将它设置为0(而不是默认的30)应该解决问题。在验证超时是问题后,我将超时设置为60并重新执行了这个步骤。一分钟的超时时间解决了问题。值得注意的是,可能会诱人更新所有DataReader Source对象的CommandTimeout值为0。这是不推荐的。相反,保持超时并将限制增加到相当慷慨的值。像我一样将它们翻倍,或者给出更慷慨的5-10分钟超时值。超时属性之所以存在,是有原因的。您可以给应用程序慷慨的超时时间,但如果应用程序根本不超时,则可能会出现问题,导致该步骤永远无法完成执行!这可能是不太可能的,但并非不可能。请保持安全,并适当调整您的超时时间。

0

对于我的这种方式,执行之前编辑 cmd OdbcCommand.....

OdbcCommand cmd = new OdbcCommand(string.Format("") cmd.CommandTimeout = 0; OdbcDataAdapter da = new OdbcDataAdapter(cmd);

目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接