2010-08-04 65 views
0

當我爲SQL Reporting Services編寫報告時,我在報告(rdl)中放入了SQL腳本。當我在SQL Management Studio中運行這個腳本時,大約需要1秒,但是報告生成的時間很長(有時候,報告會引發超時異常)。我應該在SQL Reporting Services中使用存儲過程報告

我應該寫存儲過程並在報告中使用它嗎?它會更快嗎?

還有一個問題 - 當SQL腳本返回很多行時,報告是否獲取所有行並只顯示一個頁面,或者它只從SQL-server中獲取一個頁面?

在此先感謝。

回答

2

存儲的特效VS即席/動態SQL: http://www.codinghorror.com/blog/2005/05/stored-procedures-vs-ad-hoc-sql.html

如果數據是報告正在運行之間的相對不變的,您不妨考慮一下緩存: http://msdn.microsoft.com/en-us/library/ms155927.aspx

我個人偏愛特效,因爲它使重用更容易。

您可以點擊進入RSExecutionlog /(或不!),看看有什麼是在這些方面去對事情多久正在採取的過程: http://social.msdn.microsoft.com/forums/en-US/sqlreportingservices/thread/804174a9-0f22-49a7-93f2-be4dbb3c0a4d

1

我會使用存儲過程,但不是任何速度的原因(我懷疑它會有所作爲)。如果知道所有的調用代碼都在存儲過程中,而不是埋在rdl文件中,則重構數據庫要容易得多。

從我記得有關報告服務的情況來看,渲染步驟本身可能非常耗時,並且可能會在渲染而非數據檢索上超時。

您是否在嘗試使用SQL Profiler的同時查看報表以查看獲取數據顯示爲已完成的語句與正在呈現的報表之間的差距多長時間?

+0

謝謝,我同意你關於重構,但我不不使用存儲過程,因爲它更容易發佈報告(我不需要發佈數據庫) – 2010-08-04 08:35:06

+0

謝謝我會嘗試使用Profiler – 2010-08-04 10:09:39

相關問題