Power BI 報表伺服器安裝步驟 (How to install Power BI Report Server)

2020-05-29

報表伺服器的安裝非常直覺,完成安裝後進入設定報表伺服器,如果已經具有資料庫的話,僅需設定資料庫連結、服務帳戶、前台網址即可。

logo

環境準備

  1. 下載報表伺服器安裝檔 連結
  2. 安裝報表伺服器 可以選擇 評估版 (180日) 或者 輸入序號 (從 VLSC 上取得)
  3. 為系統資料庫設定 RSExecRole 角色
  4. 設定報表伺服器
  5. 功能驗證

建立 RSExecRole (Master, Msdb)

為了使連結資料庫的報表伺服器用 SQL 帳號有足夠的作業權限,並須在 Master 及 Msdb 資料庫 新增 RSExecRole
並且必須依照下列步驟分別給予權限:

「Master」系統資料庫建立角色步驟

  1. 開啟資料庫 「Master」
  2. 開啟安全性
  3. 開啟角色
  4. 點選「資料庫角色」新增「資料庫角色」,輸入角色名稱「RSExecRole
  5. 搜尋並加入「特定物件」,選擇「擴充預存程序」
  6. 瀏覽後加入下列物件
  • xp_sqlagent_enum_jobs
  • xp_sqlagent_is_starting
  • xp_sqlagent_notify
  1. 授予上述物件執行權限 (Execute)

「Msdb」系統資料庫建立角色步驟

  1. 開啟資料庫 「Msdb」
  2. 開啟安全性
  3. 開啟角色
  4. 點選「資料庫角色」新增「資料庫角色」,輸入角色名稱「RSExecRole
  5. 搜尋並加入「特定物件」,選擇「預存程序」
  6. 瀏覽後加入下列物件
    • sp_add_category
    • sp_add_job
    • sp_add_jobschedule
    • sp_add_jobserver
    • sp_add_jobstep
    • sp_delete_job
    • sp_help_category
    • sp_help_job
    • sp_help_jobschedule
    • sp_verify_job_identifiers
  7. 授予上述物件執行權限 (Execute)
  8. 搜尋並加入「特定物件」,選擇「資料表」
  9. 瀏覽後加入下列物件
  • syscategories
  • sysjobs
  1. 授予上述物件執行權限 (Select))

使用 T-SQL 建立 RSExecRole 角色與權限 (怎麼不早說.. 😭)

USE master;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
    CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.xp_sqlagent_enum_jobs TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_is_starting TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_notify TO [RSExecRole];
GO
USE msdb;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
    CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.sp_add_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobserver TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobstep TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_delete_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_verify_job_identifiers TO [RSExecRole];
GRANT SELECT ON dbo.syscategories TO [RSExecRole];
GRANT SELECT ON dbo.sysjobs TO [RSExecRole];
GO

設定報表伺服器

服務帳戶:網路服務

資料庫權限:使用 SQL Server 驗證

使用 SQL 帳戶驗證,用來連接到報表伺服器資料庫帳戶必須擁有下列角色 (Role):
ReportServer 資料庫: Role public, Role RSExecRole
master, msdb, ReportServerTempDB 資料庫: Role RSExecRole

設定 URL 與 SSL


(如果有必要的話) 恢復報表伺服器加密金鑰,必須準備 snk 檔及恢復密碼

重新啟用報表伺服器

疑難排除

設定排程時出現「報表伺服器資料庫內部發生錯誤。這可能是因為連接失敗、逾時或資料庫內磁碟空間不足所造成。」


連線的權限不足,可能的問題就是未授予 RSExecRole,或者 RSExecRole 在系統資料庫 master 及 msdb 中的權限不足。

未執行 SQL 代理程式服務。此作業需要 SQL 代理程式服務。


資料庫伺服器啟用 SQL Server Agent

無法 改變角色 RSEexcRole 因為它不存在或您沒有權限。

因為需要將服務加入到資料庫伺服器的角色 RSExecRole ,所以在連線資料庫所使用的權限要足夠賦予 Login 角色。

錯誤訊息 無法 改變角色 RSEexcRole

錯誤尋錫

範例中是使用具有 system admin 權限的 login 進行連線

認證則是使用專為 Power BI Report Server 新建立的 Login 具備資料庫層級 Owner Role 以及 伺服器層級RSExecRole

驗證後即完成資料庫連線的設定

參考資料