2011-05-12 62 views
2

我們有很多SSRS報告,我們希望根據數據庫中的數據通過電子郵件自動發送給員工。 SSRS具有數據驅動報告功能,但關鍵缺失組件是指示報告已成功處理/發送的任何方式。更好的方式來自動發送電子郵件數據驅動的Sql Server報告服務報告?

例如,讓我們說一些事件觸發記錄進入數據庫表說,員工X需要獲得成本報告的副本項目Y.

這很容易安排驅動的數據訂閱X報告的成本報告,顯然無法將XY記錄標記爲「不再發送此報告」。

我們可以在某些情況下更改選擇報表數據的SP以進行此更新,但結果是,如果報表存在問題或者發送電子郵件存在問題(比如說網絡關閉),那麼系統會認爲報告沒有發送。

是的,我們可以在某些情況下編寫我們自己的小型服務/應用程序來讀取數據庫,抓取報告,通過電子郵件發送並重新更新數據庫,但這似乎是某種不應該像現在這樣困難。

我在這裏尋找任何建議。這肯定是人們想要處理報告最常見的事情之一,但我沒有看到解決這個問題的任何地方,或者我們可以購買的產品來消除缺陷,或者我們可以使用的開源項目等等。要麼完全滾動我們自己的系統,要麼堅持用非常糟糕的方法來提供這些報告。

+0

您應該可以查看SMTP日誌以查看報告是否已發送。由於我沒有SSRS的企業版本,我以編程方式生成訂閱以發送給用戶(首先查詢結果)。然後我知道誰有訂閱或沒有訂閱。但我不知道郵件是否已被收到或閱讀。 – SQLMason 2011-05-12 16:25:41

+0

@丹安德魯斯,試圖解析程序解析smtp日誌似乎不是一個現實的選擇。無論解析什麼應用程序,日誌都不知道報告/訂閱是如何導致電子郵件被髮送到特定的電子郵件地址的,並且它不知道需要更新的表/密鑰(s)將給定的報告標記爲已發送。即使在您動態創建訂閱的情況下,如果我錯了,請糾正我,但如果報告中的SELECT或報告定義或網絡等出現問題,您永遠不會知道。 – chrismay 2011-05-12 17:28:34

+0

generalyl我的報告基於某種東西的狀態運行,併發送給它所關注的人,並不斷髮送郵件(每週一次),直到狀態達到應有的狀態。在reportserver數據庫中,您可以看到傳遞給報告的參數,但我不知道這是否對您有幫助。 – DForck42 2011-05-17 20:25:12

回答

0

如果您正在查看某人是否被髮送特定報告,則可以在msdb中查找。這可能會給你一個想法,它關閉了其中一個系統視圖,但也有與附件相關的其他系統視圖以及電子郵件是否處於未發送狀態。這是,如果你正在使用的數據庫郵件..

克里斯 `

使用[MSDB]

GO

選擇

收件人 ,copy_recipients ,blind_copy_recipients ,主題 ,主體 ,file_attachments ,sent_st的ATU ,轉換(VARCHAR,sent_date,109)作爲DATE_SENT

從dbo.sysmail_sentitems `

+0

但SSRS不使用數據庫郵件,因此不會有任何記錄。 – chrismay 2011-05-13 03:25:26

+0

d'oh,該信息位於reportserver數據庫中。我知道ssrs使用smtp服務器,但電子郵件和報告信息記錄在那裏。 – CleanFill 2011-05-13 14:36:52

0

你能不只是交付給中央文件共享,而不是報告,然後告訴這也正是報告的用戶。我們沿着這條路線繞過郵箱的問題,發送郵件等問題。

+0

這不能解決問題。 – chrismay 2011-05-13 14:00:01

2

警告:我只能訪問SQL Server 2005 & 2008 R2標準版。我不夠幸運能夠訪問企業版。

但是,我知道,你可以檢查LastStatusLastRunTime領域的SubscriptionsReportServer數據庫(我假定數據驅動訂閱將在訂閱表仍然店簽約數據)。

通過這種方式,您可以創建和調度存儲過程,以檢查訂閱的狀態和上次發送時間,如果需要再次發送,可以將訂閱的GUID傳遞給sp_start_job存儲過程,這將正常發送訂閱。您可能需要調整訂閱,使其不會自行發送 - 只有在您的預定存儲過程觸發時纔會發送。

這是我以前使用過的東西,但是一旦您擁有數百個訂閱,最好管理起來可能非常麻煩。