2017-03-03 84 views
1

我從非常大的表格創建報表。我創建了一個非常簡單的報告,其中只有一個表格。該表似乎允許分頁,但每個頁面加載需要很長時間,看起來好像它拉動整個表然後在本地分頁。SSRS查詢分頁

我想我可能要分頁添加到查詢自己,但,這並不工作,因爲頁面變量只能在頁眉或頁腳中使用

="SELECT * FROM MyTable OFFSET " & =Globals!PageNumber & " * 20 LIMIT 20" 

以前我沒有用過SSRS所以我不確定是否有什麼明顯的東西我缺少。

任何幫助如何正確地做到這一點將不勝感激。

回答

2

如果您使用任何分頁相關表達式,SSRS必須在顯示第一頁之前檢索所有數據。例如,如果您嘗試在頁腳中執行「頁面1中的X」,則SSRS必須在顯示頁面1之前找出存在多少頁面(通過檢索並預先呈現所有頁面)。

另外,如果您不需要所有的列,請不要使用Select *。這將強制SSRS將每一列加載到其緩存中,即使它們並未全部使用。您可以減少數據檢索執行時間。

最後,如果您有權訪問SSRS報告數據庫,則可以查看報告的執行統計信息以查看性能問題的發生位置。 https://msdn.microsoft.com/en-us/library/ms159110.aspx

+0

謝謝!最終,我意識到SSRS對於我所需要做的並且推出我自己的解決方案來說太痛苦了。有幾個其他要求幾乎不可能滿足它。 – Jonathan

2

SSRS中的全局PageNumber生成後呈現報告。這就是爲什麼你不能在查詢中使用它。

目前尚不清楚你的分頁意味着什麼。一旦表格超過頁面大小,SSRS將自動爲報告創建頁面。如果您只想查詢表格的一小部分,然後單擊一個按鈕即可獲取下一個大塊,但沒有那麼容易獲得。

但是,您可以在查詢中使用ROW_NUMBER函數,並將其過濾到報表中的特定範圍。但是在運行報表之前,您必須指定參數/過濾器的值,因爲它使用這些參數來處理數據集,然後繼續呈現報表。