2009-08-04 27 views
0

我现在已经发现了一个蹩脚的TON不清楚,不相关的例子,我可以开始解决这个问题。不能相信我已经花了超过10分钟的时间,但迄今为止已经有3个小时了。超时问题重新。强类型数据集和objectdatasources

我正在查看一个aspx页面,旁边没有任何代码。此页面将水晶报告呈现为PDF格式。

水晶报告绑定到一个objectdatasource,它绑定到一个愚蠢的大数据集中的tableadapters之一。

问题是查询超时。这是一个长时间运行的过程,(50秒),超时时间为30秒。我已经看过添加一个部分类,但由于对象没有绑定在代码中,我不能设置超时这种方式,它是一个Web站点,因此数据集背后的代码无论如何都是一大堆XML我不知道我可以在这里添加一个部分类来公开超时,如果我可以重复约70次,每个适配器一次。

因此,没有人有更好的,更简单的或至少是工作,所以我可以得到这个水晶报表的方法,今天:)

感谢

回答

0

你能不能增加使用的SqlConnection的为ConnectionTimeout填充数据集?

SQlConnection.ConnectionTimeout = somevalue

+0

不抱歉连接超时它的命令对象嵌入到自动生成的数据集中,它的设置为30,它没有公开,所以你可以改变它。 – Robert 2009-08-04 14:20:47

0

有两种可能性:优化程序或增加您的连接超时。

我知道你说这是命令超时,但我敢打赌,这是数据库的连接超时。我从来没有听说过命令对象超时。

你有没有试过更改/设置超时时间在connection string

+1

命令超时和连接超时是分开的,连接超时是300秒。您可能已经使用SQL Management Studio,发现您可以通过gui执行存储过程,但超时但您的连接仍处于打开状态。同样的原理,如果你通过命令行调用proc,它不会超时,因为超时不适用,它通过gui窗口应用,但它使用类似的命令对象。如果远程使用设计器来更改表​​结构,如果使用sql命令而不是超时,则会发生同样的事情。连接不相关 – Robert 2009-09-21 10:02:22

+0

感谢您的详细解释,我从来没有任何理由认为CommandTimeout与ConnectionTimeout不同。 – 2009-09-21 10:42:26

0

如果您无法修改TableAdapter的超时时间,并且假定过程无法更快运行,那么除了将报表的数据源直接设置为存储过程外,我没有看到任何其他选项。 Crystal并不关心超时时间很短。

2

如果使用的是ObjectDataSource,则使用分部类来更改命令超时。

将以下代码添加到aspx页面上ObjectDataSource的objectCreated事件;

protected void ObjectDataSource1_ObjectCreated(object sender, ObjectDataSourceEventArgs e) 
{ 
    DataSet1TableAdapters.DataTable1Adaptor ta; 
    ta = (DataSet1TableAdapters.DataTable1Adaptor)e.ObjectInstance; 
    ta.setCommandTimeOut(60); 

} 

Sory错过了关于部分类的部分。看看Control TableAdapter Command Timeout Globally来设置命令的超时时间