2011-10-20 69 views
1

我有10個報告和250個客戶。所有報告都由我的客戶運行,每個報告都帶有參數。根據參數,相同的報告連接到不同的數據庫並獲取結果。我知道用不同的參數緩存不是一個選項。但我不想在白天運行這些關於實時數據的報告。我能做些什麼(快照,訂閱),可以在一夜之間運行,併發送這些報告或保存可用於未來24小時的快照?優化Reporting Services中的報告

在此先感謝。

回答

0

我會建議去訂閱的路線。 While you could do some fancy hack to get multiple snapshots of a single report,使用訂閱會更乾淨。

但是,由於您有250個客戶和10個不同的報告,我懷疑您希望在報告管理器中配置和管理2,500個不同的訂閱...所以我建議您爲每個訂閱者提供create a data driven subscription報告。

+1

在使用數據驅動的訂閱之前,請確保您將部署到SQL Server Enterprise版本。標準版SQL Server不支持數據驅動的訂閱。 –

+0

感謝您的回答。問題是我們使用標準版本,並且不能使用數據驅動器訂閱。所以,我必須去訂閱或快照。 –

+0

您可以編寫SQL查詢或.NET代碼來批量創建和更改訂閱。但是這需要自定義代碼。 –

1

正如M Fredrickson所建議的,訂閱可能在這裏工作,這取決於要發送的不同報告的數量。

另一種方法是將數據查詢合併到單個共享數據源。共享數據源可以啓用緩存,並且有幾個選項可用於刷新緩存,例如第一次訪問或定時計劃。請參閱MSDN for more details

緩存數據源面臨的挑戰是如何從實際數據查詢中移除所有參數,方法是將其移動到其他位置(通常是報表中的數據集過濾器)或移動到單個數據元素的過濾器中tablixes。

我使用這種方法在一夜之間刷新一個10分鐘的查詢,然後在不到30秒的時間內整天返回報告,並用很多不同的可能參數過濾數據集。

您也可以通過在報告中使用多個數據集將這種方法與其他方法結合使用,這些數據集包括一些緩存的數據集,有些則不是。

+0

感謝您的回覆。但問題是,要做到這一點,我們需要在報告中進行很多修改,這是我們現在不想做的。 –

相關問題