筆記 SQL Server Reporting Services 綜合的知識點,包含報表伺服器安裝、管理、開發工具以及報表設計的相關技巧。
說明
報表、資料集、資料源
報表 -> 資料集 (內嵌、共用) -> 資料源 (內嵌、共用)
Report -> DataSets -> DataSource
PBIRS vs SSRS
- 應用範圍
- PBIRS 可以編輯 SSRS 的編頁式報表以及專有的 PBIRS
- 開發工具
- PBIRS 以及 SSRS 的編頁式報表可以使用 Visual Studio 以及 Report Builder 編輯;PBIRS 的 Power BI 報表只能使用 Power BI Desktop 編輯|
- 授權方式
- SSRS 授權跟隨 SQL Server;PBIRS 授權需要 SQL Server Enterprise 以及 Software Assurance
快取與快照機制
編頁式報表原生透過 SessionId 的差異,向資料庫取得最新的資料用以呈現報表。使用定時排程快取與快照可以減少報表產生對於資料庫的負擔。搭配使用 ReportServer 資料庫的 View ExecutionLog3 可以觀察報表產生使用在資料庫的時間。
SSRS 相關副檔名
檔案類型 | 副檔名 |
---|---|
共用資料集 | .rsd |
共用資料源 | .rds |
Remote Side 編頁式報表 | .rdl |
Client Side 編頁式報表 | .rdlc |
RDLC 使用的資料集 | .xld |
Office Online
報表伺服器可以結合 Office Online 使用,在報表伺服器上的 Excel 檔可以直接閱覽,不用下載。但 Office Online 的授權必須搭配 SharePoints?所以在搭配使用上門檻稍微高了些😶
報表訂閱
Reporting Services 的編頁式報表支援報表訂閱,可以電子郵件或者儲存在 UNC 共用位址的方式訂閱。
使用 UNC 再搭配應用程式可以達到定期產生資料提供下載的應用方式。
Reporting Service Parameter
直接在資料集使用 @Parameter
會自動產生 Query Parameter & Report Parameter
參數有順序關係,可以藉由順序關係達到關聯式選單的設計
參數分類為 RC, RS 與 RV 系列。
參數 | 說明 |
---|---|
RC | Html Viewer |
RS | Report Server |
RV | Report Viewer Web Part Commands |
RC 系列參數,隱藏 Toolbar 的使用範例
rc:Toolbar=false
http://sql1/Reports/report/Folder/Report?rc:Toolbar=false
更多豐富的編頁式報表參數,可以參考微軟 learn.microsoft 的說明 URL access parameter reference。
報表的管理權限
報表伺服器分為系統角色與報表內容角色,系統角色有權限調整報表伺服器組態設定,但無法管理資料夾及報表的權限。
報表內容角色分為 Browser、Publisher、Report Builder 以及權限最高的 Content Manager。
報表伺服器的管理者須同時具備系統角色以及報表資料夾跟目錄的 Content Manager 才能有效進行管理。
報表伺服器組態設定
- Service Account
- 設定 SSRS & PBIRS Process 執行服務所使用的身分
- Web Service URL
- Web Service 路徑,主要由編頁式報表發佈所使用
- Database
- 設定報表伺服器連動的資料庫,可以重新產生資料庫。預設名稱 ReportServer 以及 ReportServerTemp
- Web Portal Url
- SSRS & PBIRS 的入口網頁,除提供前端瀏覽方式上傳 RDL 以及 PBIX 外,也支援 REST API 的方式存取報表資源
- E-mail Settings
- 設定 SMTP 以支援報表訂閱使用電子郵件選項
- Execution Account
- 資料來源是 UNC 檔案時,指定執行的身分
- Encryption Keys
- 設定加密資料庫關於資料來源連線方式的機敏資訊,可以產生加密的 Key 以及用 Key 還原資料
- Subscription Settings
- 設定報表訂閱是以 UNC 方式儲存報表結果的時候,寫入檔案的身分
- Scale-Out Deployment
- 設定報表伺服器的高可用設定
- Power BI Service (Cloud)
- 設定與 Power BI 雲端服務的連結
檢查報表被使用的情形
可以從預設的報表資料庫 ReportServer 藉由 View ExecutionLog3 進行觀察。
SELECT [InstanceName] ,[ItemPath] ,[UserName] ,[ExecutionId]
,[RequestType] ,[Format] ,[Parameters] ,[ItemAction]
,[TimeStart] ,[TimeEnd] ,[TimeDataRetrieval] ,[TimeProcessing]
,[TimeRendering] ,[Source] ,[Status] ,[ByteCount]
,[RowCount] ,[AdditionalInfo]
FROM [ReportServer].[dbo].[ExecutionLog3]
其中 Format 可以用於區分是編頁式報表或 Power BI 報表,Power BI 報表的使用會產生多個資料列。
隱藏轉譯的選項
可以調整停用特定的轉譯選項,例如禁止使用 Excel 或者 Word。
調整方式前往報表伺服器的 Config 進行設定
Power BI Report Server 的路徑
C:\Program Files\Microsoft Power BI Report Server\PBIRS\ReportServer
SQL Server Reporting Services 的路徑
REM NULL
將 rsreportserver.config
中 Render Section 要禁用的 Extension 註解即可。
<Render>
<Extension Name="WORDOPENXML" Type="Microsoft.ReportingServices.Rendering.WordRenderer.WordOpenXmlRenderer.WordOpenXmlDocumentRenderer,Microsoft.ReportingServices.WordRendering"/>
<Extension Name="WORD" Type="Microsoft.ReportingServices.Rendering.WordRenderer.WordDocumentRenderer,Microsoft.ReportingServices.WordRendering" Visible="false"/>
<Extension Name="EXCELOPENXML" Type="Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.ExcelOpenXmlRenderer,Microsoft.ReportingServices.ExcelRendering"/>
<Extension Name="EXCEL" Type="Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer,Microsoft.ReportingServices.ExcelRendering" Visible="false"/>
<Extension Name="PPTX" Type="Microsoft.ReportingServices.Rendering.PowerPointRendering.PptxRenderingExtension,Microsoft.ReportingServices.PowerPointRendering"/>
<Extension Name="PDF" Type="Microsoft.ReportingServices.Rendering.ImageRenderer.PDFRenderer,Microsoft.ReportingServices.ImageRendering"/>
<Extension Name="IMAGE" Type="Microsoft.ReportingServices.Rendering.ImageRenderer.ImageRenderer,Microsoft.ReportingServices.ImageRendering"/>
<Extension Name="MHTML" Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.MHtmlRenderingExtension,Microsoft.ReportingServices.HtmlRendering">
<Configuration>
<DeviceInfo>
<DataVisualizationFitSizing>Approximate</DataVisualizationFitSizing>
</DeviceInfo>
</Configuration>
</Extension>
<Extension Name="CSV" Type="Microsoft.ReportingServices.Rendering.DataRenderer.CsvReport,Microsoft.ReportingServices.DataRendering"/>
<Extension Name="XML" Type="Microsoft.ReportingServices.Rendering.DataRenderer.XmlDataReport,Microsoft.ReportingServices.DataRendering"/>
<Extension Name="ATOM" Type="Microsoft.ReportingServices.Rendering.DataRenderer.AtomDataReport,Microsoft.ReportingServices.DataRendering"/>
<Extension Name="NULL" Type="Microsoft.ReportingServices.Rendering.NullRenderer.NullReport,Microsoft.ReportingServices.NullRendering" Visible="false"/>
<Extension Name="RGDI" Type="Microsoft.ReportingServices.Rendering.ImageRenderer.RGDIRenderer,Microsoft.ReportingServices.ImageRendering" Visible="false"/>
<Extension Name="HTML4.0" Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.Html40RenderingExtension,Microsoft.ReportingServices.HtmlRendering" Visible="false">
<Configuration>
<DeviceInfo>
<DataVisualizationFitSizing>Approximate</DataVisualizationFitSizing>
</DeviceInfo>
</Configuration>
</Extension>
<Extension Name="HTML5" Type="Microsoft.ReportingServices.Rendering.HtmlRenderer.Html5RenderingExtension,Microsoft.ReportingServices.HtmlRendering" Visible="false">
<Configuration>
<DeviceInfo>
<DataVisualizationFitSizing>Approximate</DataVisualizationFitSizing>
</DeviceInfo>
</Configuration>
</Extension>
<Extension Name="RPL" Type="Microsoft.ReportingServices.Rendering.RPLRendering.RPLRenderer,Microsoft.ReportingServices.RPLRendering" Visible="false" LogAllExecutionRequests="false"/>
</Render>