2009-08-04 58 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來設置命令的超時時間