2013-05-03 77 views
0

我有一個以純模式運行的SSRS 2008服務器。我試圖弄清楚以下是否可能,如果是的話,如何做到這一點。我希望有一個預定的訂閱,只有在某些條件滿足時纔會生成報告。對於我來說,表達條件的最自然的方式是如果特定的查詢返回數據。這可能嗎?SSRS中的條件報告

所以基本上我會定期檢查數據庫,如果有一些數據(如在錯誤日誌中)發送一封關於它的電子郵件。

經過一些研究,我發現這個鏈接: http://blogs.msdn.com/b/bimusings/archive/2005/07/29/445080.aspx 其中評論人提供了下面的技巧:

IF NOT EXISTS (SELECT * FROM ....) 

RAISEERROR('no records found,'16,1 

ELSE 

SELECT * FROM .... 

我可以用這要麼產生一個電子郵件發送或拋出一個錯誤。問題是我的報告包裝在存儲過程中,並且不能使用IF NOT EXISTS與存儲過程。有沒有人建議如何檢查存儲過程是否返回行而不將其放入臨時表或執行查看@@ rowcout?最後一個不適合我,因爲我不能讓程序的輸出與電子郵件一起返回。

+0

您可以在存儲過程中使用IF NOT EXISTS。 – ShellNinja 2013-11-27 20:39:11

回答

0

您正在尋找Data-Driven Subscriptions。從該MSDN文檔:

Reporting Services提供數據驅動的訂閱,以便您可以基於動態訂戶數據自定義報告的分發。數據驅動的訂閱適用於以下幾種情況:

•將報表分發給其成員可能從一個發行版更改爲下一個發行版的大型收件人池。例如,向所有當前客戶分發月度報告。

•根據預定義的標準將報告分發給特定的收件人組。例如,向組織中的前十名銷售經理髮送銷售業績報告。

並非所有版本的SSRS都支持數據驅動訂閱,因此請務必檢查您的版本是否有效。

我沒有太多的工作,但AFAIK它應該滿足您的要求。從related/relvant MSDN page

使用數據驅動訂閱在運行時自定義報告輸出,傳遞選項和報告參數設置。訂閱使用查詢在運行時從數據源獲取輸入值。您可以使用數據驅動的訂閱來執行郵件合併操作,該操作會將報表發送到訂閱處理時確定的訂閱者列表。

看來,這是你所追求的。

+0

表面上是的,但我仍然在尋找一種方法,在滿足某些條件時不實際發送報告。 – stas 2013-05-03 14:24:55

0

您實際上可以使用TSQL命令觸發SSRS報告。我有一個計劃定期運行的腳本,並執行一些SQL來決定是否應該運行特定的SSRS報告。這應該爲你做的伎倆。你所做的就是報告的id,然後像任何其他工作一樣執行它 - 我建議你查看一個預定的SSRS報告,看看在DB中的參數是什麼樣的,以便你可以正確地調用它。

+0

我想避免服務器端腳本。一旦我開始這樣做,我可以繞過使用SSRS,並在腳本發現異常時發送電子郵件。 – stas 2013-05-03 16:36:16