管理報表伺服器資料庫

Reporting Services 部署會使用兩個 SQL Server 關聯式資料庫供內部儲存之用。根據預設,資料庫是命名為 ReportServer 和 ReportServerTempdb。ReportServerTempdb 是由主要報表伺服器資料庫所建立,用於儲存暫存資料、工作階段資訊和快取報表。

在 Reporting Services 中,資料庫管理工作包含備份與還原報表伺服器資料庫,以及管理用於將敏感性資料加密與解密的加密金鑰。

為了管理報表伺服器資料庫,SQL Server 提供許多工具。

  • 若要備份或還原報表伺服器資料庫、移動報表伺服器資料庫,或復原1表伺服器資料庫,您可以使用 SQL Server Management Studio、Transact-SQL 命令或資料庫命令提示字元公用程式。如需指示,請參閱《SQL Server 線上叢書》中的<將報表伺服器資料庫移至其他電腦>。

  • 若要將現有的資料庫內容複製到其他報表伺服器資料庫,您可以附加報表伺服器資料庫的複本,並將這個複本與不同的報表伺服器執行個體一起使用。或者,您也可以建立並執行使用 SOAP 呼叫的指令碼,在新的資料庫中重新建立報表伺服器內容。您可以使用 rs 公用程式執行指令碼。

  • 若要管理報表伺服器和報表伺服器資料庫之間的連接,以及找出特定報表伺服器執行個體所使用的資料庫,您可以使用 Reporting Services 組態工具中的 [資料庫安裝] 頁面。若要深入了解有關報表伺服器資料庫之報表伺服器連接的詳細資訊,請參閱<設定報表伺服器資料庫連接>。

SQL Server 登入和資料庫的權限

報表伺服器資料庫可供報表伺服器在內部使用。任何一個資料庫的連接都是由報表伺服器服務所建立的。您可以使用 Reporting Services 組態工具來設定報表伺服器資料庫的報表伺服器連接。

資料庫之報表伺服器連接的認證可以是服務帳戶、Windows 本機或網域使用者帳戶,或 SQL Server 資料庫使用者。您必須針對連接選擇現有的帳戶。Reporting Services 不會自動為您建立帳戶。

系統會針對您指定的帳戶自動建立報表伺服器資料庫的 SQL Server 登入。

此外,系統也會自動設定資料庫的權限。Reporting Services 組態工具會將帳戶或資料庫使用者指派至報表伺服器資料庫的 Public 和 RSExecRole 角色。RSExecRole 提供用來存取資料庫資料表及執行預存程序的權限。當您建立報表伺服器資料庫時,系統會在 master 和 msdb 中建立 RSExecRole。RSExecRole 是報表伺服器資料庫之 db_owner 角色的成員,可讓報表伺服器在支援自動升級程序的情況下更新自己的結構描述。

報表伺服器資料庫的命名慣例

建立主要資料庫時,資料庫的名稱必須遵照<識別碼>中的規則。暫存資料庫名稱必須與主要報表伺服器資料庫的名稱相同,但要加上 Tempdb 後置詞。您不能將暫存資料庫命名為不同的名稱。

不支援重新命名報表伺服器資料庫,因為報表伺服器資料庫是被視為內部元件,如果重新命名報表伺服器資料庫將會發生錯誤。特別是,如果重新命名主要資料庫,將會出現錯誤訊息,說明資料庫名稱未同步。如果您重新命名 ReportServerTempdb 資料庫,稍後執行報表時就會發生下列內部錯誤:

「報表伺服器發生內部錯誤。請參閱錯誤記錄以取得更多詳細資料。(rsInternalError)

無效的物件名稱 'ReportServerTempDB.dbo.PersistedStream'。」

發生這個錯誤是因為 ReportServerTempdb 名稱是儲存於內部,以供預存程序執行內部作業之用,如果重新命名此暫存資料庫將會造成預存程序無法正常運作。

在報表伺服器資料庫上啟用快照集隔離

您無法在報表伺服器資料庫上啟用快照集隔離。如果快照集隔離已開啟,您將會遇到下列錯誤:「選取的報表還無法檢視。報表仍在轉譯中,或報表快照集無法使用」。

如果您並未刻意啟用快照集隔離,表示可能有另一個應用程式已經設定此屬性,或者 model 資料庫可能啟用了快照集隔離,因而導致所有新資料庫都繼承此設定。

若要在報表伺服器上關閉快照集隔離,請啟動 Management Studio、開啟新的查詢視窗、貼上下列指令碼,然後執行:

ALTER DATABASE ReportServer
SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE ReportServerTempdb
SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE ReportServer
SET READ_COMMITTED_SNAPSHOT OFF
ALTER DATABASE ReportServerTempDb
SET READ_COMMITTED_SNAPSHOT OFF

關於資料庫版本

在 Reporting Services 中,沒有提供有關資料庫版本的明確資訊。不過,因為資料庫版本一律與產品版本同步,所以您可以使用產品版本資訊,得知資料庫版本變更的時間。您可以透過記錄檔、所有 SOAP 呼叫的標頭,以及當您連接到報表伺服器 URL 時 (例如,當您將瀏覽器開啟到 https://localhost/reportserver 時) 出現的檔案版本資訊,得知 Reporting Services 的產品版本資訊。如需詳細資訊,請參閱<如何:偵測版本資訊 (Reporting Services)>。