[SSRS]SSRS 從 SQL Server 2008 移轉並升級到 SQL Server 2014
最近有同事在詢問如何移轉 SQL Server 2008 的 Reporting Services,原本是朝向先將既有的報表作匯出,再到目的端電腦做匯入,但因為 SSRS 內針對「資料來源 (Data Source)」儲存時是有做加密處理的,因此就嘗試將 ReportServer & ReportServerTempDB 這兩個資料庫做備份還原,一次將所有的設定全部還原到目的電腦上。
因為手邊剛好沒有現成的環境可以使用,因此就在 Azure 上取得兩個 SQL Server 的 VM,一個是 SQL Server 2008 R2,另外一個是 SQL Server 2014,由於是申請 Azure 上面的 VM,所以抓的畫面都是英文版的。一開始我們先準備好我們的測試環境,在這個測是環境中我先模擬一下有共用資料來源、共用資料集和兩張報表。並將這些做好的報表部署到 SSRS 上面。
透過網站上可以查詢到報表都有正確的佈署上去了。
備份
確定好來源的主機都正常之後,那我們就可以開始準備匯出我們的資料庫。首先我們資料庫來源主機上,執行「SQL Server Reporting Services 組態管理員」,選擇「加密金鑰(Encryption Keys)」→「備份(Backup)」
設定要匯出的檔案路徑和密碼,就可以將加密金鑰給匯出了。
透過指令或者是 GUI 的介面,將 ReportServer 和 ReportServerTempDB 這兩個資料庫給備份到目錄下,預備等一下可以將這兩個備份檔案和前面所備份的加密金鑰,一併複製到目的電腦上。
BACKUP DATABASE [ReportServer] TO DISK = N'D:\Migration\DBF\ReportServer.bak' WITH COPY_ONLY, INIT, COMPRESSION
GO
RESTORE VERIFYONLY FROM DISK = N'D:\Migration\DBF\ReportServer.bak'
GO
BACKUP DATABASE [ReportServerTempDB] TO DISK = N'D:\Migration\DBF\ReportServerTempDB.bak' WITH COPY_ONLY, INIT, COMPRESSION
GO
RESTORE VERIFYONLY FROM DISK = N'D:\Migration\DBF\ReportServerTempDB.bak'
GO
還原
預備好資料之後,我們就要到目的電腦上來進行還原的處理,首先我們可以透過指令或者是 GUI 的介面,將資料庫備份檔案在目的主機上還原。
USE [master]
RESTORE DATABASE [ReportServer] FROM DISK = N'D:\Migration\DBF\ReportServer.bak' WITH
MOVE N'ReportServer' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ReportServer.mdf',
MOVE N'ReportServer_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ReportServer_log.LDF'
GO
USE [master]
RESTORE DATABASE [ReportServerTempDB] FROM DISK = N'D:\Migration\DBF\ReportServerTempDB.bak' WITH
MOVE N'ReportServerTempDB' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ReportServerTempDB.mdf',
MOVE N'ReportServerTempDB_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ReportServerTempDB_log.LDF'
GO
接著一樣是選擇執行「SQL Server Reporting Services 組態管理員」來進行設定。
連上後選擇「資料庫 (Database)」→「變更資料庫 (Change Database)」
選擇「選擇現有報表伺服器資料庫 ( Choose an existing report server database )」
設定連線資訊,確認可以連接後選擇下一步
挑選所還原的資料庫 ReportServer
在選擇認證的部份,這裡會有點不一樣,SQL Server 2008 的時候,SSRS 預設是使用 Network Service 啟動,但在 SQL Server 2014 的時候,則是改成 ReportServer 的虛擬帳號。
基本上沒有問題應該一分鐘就可以完成設定。
完成指定資料庫之後,接下來要還原憑證,選擇「加密金鑰」→「還原 (Restore)」
指定要還原的金鑰檔案和備份時所設定的密碼
還原之後會有點小狀況,如果來源主機和目的主機的名稱不同,此時在 ReportServer 資料庫內的 Keys 會有兩筆記錄,因此我們需要手動將舊的憑證給刪除。我們利用 SSMS 編輯該資料表,可以將舊的憑證資訊給刪除。在這個例子中,舊的 SQL Server 電腦名稱是 SQK2008R2,目的主機是 SQL2014。
刪除後的結果
設定
完成報表資料庫和資料庫憑證的還原之後,那接下來我們就可以在新的主機上把 SSRS 的服務給重新啟動,並且進行後續相關的設定。
我們可以從上而下檢查下來,首先在「服務帳戶 (Service Account)」,重新指定 ReportServer 並套用,確認是正常的。
接下來是 「Web 服務 URL ( Web Service URL )」,套用之後則可以啟動報表伺服器的服務網站了
接下來設定 「報表管理員 URL ( Report Manager URL)」,選擇套用可以啟動報表伺服器的 Web 管理介面
接下來選擇加密金鑰選擇變更,將金鑰給重新升級
測試
完成上述步驟之後,我們就可以開始進行相關測試,看看整個步驟是否如同我們所期望的可以完整的移轉到新的主機上,我們可以透過管理介面查看到,主機上如同我們來源端的,資料來源、資料集和報表都能看到。
我們進入資料來源做個檢查,要注意我們在前面的步驟主要都說明如何處理報表資料庫,但當我們要移轉到新主機的時候,要確定其他該資料庫上的帳號都有移轉,移轉的方式可以參考「AlwaysON 帳號設定」所介紹的方式,將來源主機的其他帳密都能移轉到目的主機上,這裡因為來源主機上我們是用一個 xyz 的帳號去讀取資料,在移轉之後在目的主機上也有相同的帳號密碼之後,我們按下下方的「測試連線 ( Test Connection )」,看起來是可以正常的,也就是說除了報表和資料集的設定之外,加密的連線在新的報表主機上都可以取得了。
測試一下報表也可以正常開啟,看來又完成一次「簡單任務」了。