[SSRS]SSRS 從 SQL Server 2008 移轉並升級到 SQL Server 2014

[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 上面。

001

 

透過網站上可以查詢到報表都有正確的佈署上去了。

004

 


 

備份

確定好來源的主機都正常之後,那我們就可以開始準備匯出我們的資料庫。首先我們資料庫來源主機上,執行「SQL Server Reporting Services 組態管理員」,選擇「加密金鑰(Encryption Keys)」→「備份(Backup)

image

 

設定要匯出的檔案路徑和密碼,就可以將加密金鑰給匯出了。

011

 

透過指令或者是 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

013

 


 

還原

預備好資料之後,我們就要到目的電腦上來進行還原的處理,首先我們可以透過指令或者是 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 組態管理員」來進行設定。

020

 

連上後選擇「資料庫 (Database)」→「變更資料庫 (Change Database)

image

 

選擇「選擇現有報表伺服器資料庫 ( Choose an existing report server database )

image

 

設定連線資訊,確認可以連接後選擇下一步

image

 

挑選所還原的資料庫 ReportServer

image

 

在選擇認證的部份,這裡會有點不一樣,SQL Server 2008 的時候,SSRS 預設是使用 Network Service 啟動,但在 SQL Server 2014 的時候,則是改成 ReportServer 的虛擬帳號。

image

026

 

基本上沒有問題應該一分鐘就可以完成設定。

027

 

完成指定資料庫之後,接下來要還原憑證,選擇「加密金鑰」→「還原 (Restore)

image

 

指定要還原的金鑰檔案和備份時所設定的密碼

031

 

還原之後會有點小狀況,如果來源主機和目的主機的名稱不同,此時在 ReportServer 資料庫內的 Keys 會有兩筆記錄,因此我們需要手動將舊的憑證給刪除。我們利用 SSMS 編輯該資料表,可以將舊的憑證資訊給刪除。在這個例子中,舊的 SQL Server 電腦名稱是 SQK2008R2,目的主機是 SQL2014。

image

 

刪除後的結果

041

 

 


 

設定

完成報表資料庫和資料庫憑證的還原之後,那接下來我們就可以在新的主機上把 SSRS 的服務給重新啟動,並且進行後續相關的設定。

043

 

我們可以從上而下檢查下來,首先在「服務帳戶 (Service Account)」,重新指定 ReportServer 並套用,確認是正常的。

image

 

接下來是 「Web 服務  URL ( Web Service URL )」,套用之後則可以啟動報表伺服器的服務網站了

image

054

 

接下來設定 「報表管理員 URL ( Report Manager URL)」,選擇套用可以啟動報表伺服器的  Web 管理介面

image

056

 

接下來選擇加密金鑰選擇變更,將金鑰給重新升級

image

058

 


 

測試 

完成上述步驟之後,我們就可以開始進行相關測試,看看整個步驟是否如同我們所期望的可以完整的移轉到新的主機上,我們可以透過管理介面查看到,主機上如同我們來源端的,資料來源、資料集和報表都能看到。

060

 

我們進入資料來源做個檢查,要注意我們在前面的步驟主要都說明如何處理報表資料庫,但當我們要移轉到新主機的時候,要確定其他該資料庫上的帳號都有移轉,移轉的方式可以參考「AlwaysON 帳號設定」所介紹的方式,將來源主機的其他帳密都能移轉到目的主機上,這裡因為來源主機上我們是用一個 xyz 的帳號去讀取資料,在移轉之後在目的主機上也有相同的帳號密碼之後,我們按下下方的「測試連線 ( Test Connection )」,看起來是可以正常的,也就是說除了報表和資料集的設定之外,加密的連線在新的報表主機上都可以取得了。

061

 

測試一下報表也可以正常開啟,看來又完成一次「簡單任務」了。

062