2014年2月24日 星期一

[SQL Server 2008R2][SSRS] 報表訂閱與派送(前置作業)

將設計好的報表透過最便利的方式傳遞到報表使用者手上,從主管立場考量,最好是有人可以每天把他們要看的報表依照所要設定的參數條件事先處理完成,無須等待直接將內容寄到電子信箱中,最好已轉成 Excel 檔,以便開啟瀏覽。這些需求正是報表訂閱與派送的重點。
SSRS 2008 R2 提供兩種報表傳遞途徑:

  • 電子郵件遞送
  • 分享資料夾遞送

訂閱的方式也有兩種:

  • 標準訂閱:每次設定獨立的訂閱條件。
  • 資料導向訂閱:設計大批客製化訂閱,必須 SSRS 企業版以上方能提供此功能。
訂閱的精神在於利用排程的方式預先將報表處理完成,再透過傳遞途徑將報表送到報表使用者的手中。
共用排程與報表特定排程
SSRS 分為兩種排程模式,分別為報表特定排程以及共用排程。共用排程可以一次處理多張報表以及多個訂閱,如果排程有所變更,只需修改一處即可,對報表伺服器管理員來說,管理的工作較輕鬆。報表特定排程只有在共用排程顯示所需的週期都不敷使用時,或是只需針對單一報表設定週期,才會另行設定報表特定排程。

在使用排程執行報表之前,SQL Server Agent 必須先啟動 ( 預設是停用的 ),因 SSRS 是利用 SQL Server Agent 來作為排程引擎,以及利用 SQL Server Agent 作業觸發報表執行。此外,也必須將新的執行報表身份認證資訊事先儲存於報表伺服器中,因 SSRS 無法根據 Windows 整合認證以執行排程報表。基本上,會設計一組獨立的登入帳號以用來執行報表,同時僅賦予該帳號以下權限:
  1. ReportServer 資料庫的讀取權限。
  2. msdb 資料庫的讀取權限。
  3. 包含在報表內的所有資料庫物件的讀取權限。

共用排程
在報表管理員或是 SSMS 中都可以建立共用排程,在報表管理員之中,只要點選右上方的「站台設定」連結,並切換至「排程」分頁。




也可以在 SSMS 中設定,必須先連入「報表伺服器」,在「共用排程」資料夾按右鍵,並選取「新增排程」選項。



不論是使用報表管理員或是 SSMS 建立共用排程,設定者必須先隸屬於「系統安全性角色」且具備「管理共用排程」權限,「系統管理員」是預設具備此權限的。


報表特定排程
沒有適當的共用排程或只想對單張報表設定特定排程時,再嘗試使用報表特定排程。過度開放權限讓使用者可以自行設定報表特定排程,將造成報表伺服器管理上的困擾。
報表特定排程是依附在特定報表之上,因此,為了要定義報表特定排程,可直接在設定報表快取重新整理計劃、快照集或是訂閱的介面中再另行設定。


標準訂閱
利用訂閱將表主動遞送以滿足取得報表的需求,讓報表在指定時間、指定條件、指定轉譯格式,以及傳送方法遞送給報表使用者的技術,而訂閱本身必須與排程相互結合。
SSRS 可以利用分享資料夾或是使用簡易郵件傳輸協定 ( Simple Mail Transport Protocol;SMTP ) 以電子郵件方式傳遞。
在舊版 SSRS 所提供的空值傳遞 ( Null Delivery ) 模式,是表示報表並不傳送至任何地方,而是根據排程儲存於快取中,這種模式已經在 SSRS 2008 R2 中被快取重新整理整理計劃所取代 ( 在資料導向訂閱中仍保留 ),建立報表快取可以協助提升前端使用者存取報表效能。

前置作業
進入此報表的「訂閱」頁籤,點選「新增訂閱」後即可進入訂閱畫面。要注意的是,所選取的報表必須使用預存認證,否則「新增訂閱」按鈕便無法使用。錯誤訊息「無法建立訂閱,因為並未儲存用來執行報表的認證,或者是使用連結報表,而連結不再有效」



若此報表在 BIDS 設計時,資料來源若是使用「內嵌連接」,而在認證的分頁沒有特別設定,使用預設值「使用 Windows 驗證 ( 整合式安全性 )」。




則在報表管理員中,在此報表中切換至「資料來源」頁籤,點選「安全地儲存在報表伺服器中的認證」,並勾選「連接到資料來源時作為 Windows 認證」



若在 BIDS 建立「共用資料來源」時,並未設定「認證」分頁中的資料,預設是「不要使用認證」。




若此報表在 BIDS 設計時,資料來源若是使用共用資料來源參考」




則在報表管理員的「資料來源」中,要設定「安全地儲存在報表伺服器中的認證」,輸入使用者名稱及密碼後,並勾選「連接到資料來源時作為 Windows 認證」。




為了避免在報表管理員介面中還要設定「執行報表的認證」,可以在 BIDS 設計階段即設定好相關認證資料。

若在 BIDS 中使用「共用資料來源屬性」,則在「認證」的分頁中設定「連接資料來源的認證」,則在報表管理員中不需要修改任可值。資料來源若是使用「內嵌連接」也是一樣。



若在 BIDS 設計中,將資料來源屬性「認證」分頁中,使用 DB 的帳號也可以。


在報表管理員此報表的「資料來源」分頁中,不用勾選「連接到資料來源時作為 Windows 認證」。


※ 注意不要勾選「連接到資料來源後,模擬已驗證的使用者」。因為如此一來,SSRS 會真的以為這是透過 Windows 整合驗證,即使按下「測試連接」的按鈕後,顯示「成功建立連接」,會造成仍舊無法訂閱的狀況。


設定完資料來源認證後,雖然點選訂閱可以進入畫面,但卻找不到電子郵件的選項,因還沒設定發送訂閱信件的代表電子郵件的資訊。




必須在 SSRS 組態管理員中設定系統的電子郵件功能,否則在「指定報表傳遞的選項」中「傳遞者」下拉選單裡沒有利用電子郵件派送的選項。

先開啟「Reporting Services 組態管理員」,切換至「電子郵件設定」畫面,輸入「寄件者地址」與「SMTP伺服器」。


 除非公司的電子郵件伺服器是使用 Exchange,而且是採用 Windows 整合認證,或是伺服器上有安裝 Outlook 可以用來設定 SMTP 組能,否則會無法正常發信。若公司的線路是使用中華電信,也可以使用 HiNet 的 SMTP 服務 ( msa.hinet.net )。





也可以利用 SQL Server 內建的 Database Mail 功能來協助進行發信。

點選「執行下列工作以設定 Database Mail (S)」


輸入設定名稱後,並點選「加入」按鈕,以加入新的電子郵件帳戶。




可以設定此設定檔要給所有使用者共用或是特定使用者使用。


可設定發信的相關參數


完成 Database Mail 的設定。




沒有留言: