SQL Server Reporting Services Common Knowledge, SSRS Guide

2022-04-22

筆記 SQL Server Reporting Services 綜合的知識點,包含報表伺服器安裝、管理、開發工具以及報表設計的相關技巧。

SQL Server Logo

說明

報表、資料集、資料源

報表 -> 資料集 (內嵌、共用) -> 資料源 (內嵌、共用)

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>

相關連結

ASP.NET MVC Reporting With RDLC (使用 RDLC 作為報表解決方案)