大部分人安裝Reporting Service的經驗應該都是輕鬆愉快的"下一步、下一步"吧? 但我遇到的盡是一些RSConfigTool BugSSRS+SQL 2000 Reporting Service等刁鑽又詭異的情境,總與輕鬆愉快無緣。

這兩天幫同事要裝另一台SSRS + Reporting Service 2000的組合,本以為可以靠上回的經驗輕鬆過關,沒想到又是另一場苦難的開始。

上回安裝SSRS+SQL 2000 Reporting Service的情境,DB用的是SQL 2000,RptSvc2000是已經裝好的。這回的難題是,SQL 2000 Reporting Service的DB必須安裝在SQL 2005上...

SQL 2000 Reporting Service安裝時會檢查SQL Server版本是否吻合,就連Developer Edition的Reporting Service裝在SQL 2000 Enterprise Edition都過不了關,更甭說把SQL 2000 Reporting Service裝在SQL 2005了。

這回我想到的方法是手上有一組現成的ReportServer, ReportServerTempDB資料庫已裝在SQL 2000運轉中,打算將它Copy到SQL 2005上Attachment起來,並重新設定資料庫連線資訊,這個做法跟新增Web Farm主機差不多,理論上是可行的。而且,現成的ReportServer DB中已有一大堆報表,剛好也要在新環境中使用,此法還省去了重新部署報表的手續。

由於Reporting Service中有所謂的加密金鑰,必須與資料庫用的一致才能接上該資料庫,所以第一步是將金鑰匯出來:

C:\Program Files\Microsoft SQL Server\80\Tools\binn>rskeymgmt -e -f c:\rs2000.key -p keyPassword

接著在新主機上安裝SQL 2000 Reporting Service,但麻煩事來了...

第一,SQL 2000屬於另一個Domain,我發現在設定資料庫連線時,即使選擇用SQL帳號登入,系統還是會一直丟出"使用者'(null)'的登入失敗。原因: 未結合受信任的SQL Server連線。"。Google了一下,有人建議用RSSETUPACCOUNT指定帳號,但我測試的結果會變成丟出Domain\User認證失敗的訊息。後來想到一招鋸箭法,新主機開一個與另一Domain管理者級帳號密碼完全相同的帳號,改用該帳號執行安裝程式,透過"自動登入"的巧門,總算解決了這個棘手問題。

才剛過一關,第二個問題馬上就來了。Reporting Service的安裝程式允許你使用現成的ReportServer資料庫,主要是用於Web Farm新增Web主機的情境,但由於該資料庫已套用SP2換了版本,安裝程式會認為ReportServer資料庫的版次不對而無法直接使用。不得已,只好選擇另外新增ReportServer資料庫把Reporting Service裝起來,稍後再修改。

過了這兩關,後面的工作跟原先規劃的相去不遠,還算順利。

  1. 停止SQL 2000 Server
  2. 將ReportServer.mdf, ReportServer.ldf, ReportServerTempDB.mdf, ReportServerTempDB.ldf複製到SQL 2005
  3. SQL 2005 Attach這ReportServer, ReportServerTempDB資料庫
  4. 建立帳號rs_account,並給予存取ReportServer, ReportServerTempDB資料庫的db_owner權限
  5. 將新主機Reporting Service連線指向自身的SQL 2005
    C:\Program Files\Microsoft SQL Server\80\Tools\binn>rsconfig -c -s newHost -a sql -d reportserver -u rs_account -p password
    The command completed successfully
  6. 此時瀏覽http: //newHost/reports ,會發生以下錯誤
    尚未初始化報表伺服器安裝。如需詳細資訊,請查看文件。 (rsReportServerNotActivated) 取得線上說明
    -2147159550
  7. 我們需要安裝原先匯出的那把Key
    C:\Program Files\Microsoft SQL Server\80\Tools\binn>rskeymgmt -a -f d:\rs2000.key -p keyPassword
    Restarting the Report Server Windows service...
    Restarting IIS...
    The command completed successfully

再試一次,報表出現,搞定收工。


Comments

# by lukuwu

請問SQL 2008也可以這樣做嗎?

Post a comment