多奇 IT 部落格

記錄著多奇數位在工作中對資訊技術的心得筆記

之前有客戶因為安裝資料庫太分散,導致授權數不足,經過我們的分析之後,其實用現有的授權就足夠了,只需要將分散在各個 VM 中的 SQL Server instance 移除,並將資料庫統一集中即可。

這個想法其實很單純,但沒想到轉移 SharePoint 2003 的資料庫由 A Server to B Server 這麼麻煩。

由於我之前沒有嘗試過在 SharePoint 2003 上轉移 SQL Server 資料庫,所以我先去找了相關文獻,這才發現,在 SharePoint 2003 中,並不是改改 web.config 中的連線字串就結束了。參考連結如下:

http://support.microsoft.com/kb/894164

上述技術文件大致上有幾個重要步驟:

1、使用 SharePoint 內建的工具進行備份

2、使用 SSMS 資料庫管理工具進行資料庫的備份

3、使用 SharePoint 組態設定網站,將原先的設定值全部砍掉 (這步驟有相當多細節)

4、還原使用 SharePoint 工具備份的資料

但是我一開始的第一個步驟就失敗了,如下圖:

2012-09-30_022243

SITEDB (網站相關資料庫) 、 DOCLIB (文件資料庫) 我都成功備份,就 INDEX 備份失敗。我找了老半天找不出原因,但我不打算停止嘗試,我要把 SharePoint 產生的網站砍掉重建  = =

當然,在做之前,因為有 vmware ESXi 的虛擬化環境,所以一定要先做 snapshot ,至少失敗了還可以倒回來。

過程就不多說了,我嘗試的結果就是,SharePoint 所產生的備份檔無法重建網站 Orz…

事件檢視器的產生一堆錯誤 logs

2012-09-30_024357

我檢查過資料夾權限、執行 SQL Server 帳戶權限,但就是找不出為何會還原失敗的原因。試了 3、4 個小時後,我覺得這樣不行,趕緊使用 snapshot 還原,並找詢其它可用辦法。

過程中我覺得很納悶,為何組態設定網站的資料庫、內容資料庫都可以由組態網站中進行設定,但 SharePoint 的其它二個資料庫卻沒辦法,相關資料庫一共 4 個如下:

  • PortalSiteName_prof
  • PortalSiteName_serv
  • PortalSiteName_site
  • SharePoint 入口網站 Server 2003 組態資料庫。預設情況下,這個資料庫稱為 SPS_Config_db

2012-09-30_024650

2012-09-30_024553

 

我想了想,既然 portal 網站中所有的檔案都沒有連線字串相關資訊,那程式該怎麼知道資料庫是位於哪台 SQL Server , 如果程式寫死又被 compile 成 .dll 檔的話我就認了。但既然不在檔案裡,那或許是在資料庫中。

或許是我運氣不錯,被我找到在組態資料庫中的 Database 資料庫中的  DatabaseServiceId 中。雖然說是一堆看不懂的數字,但是我們剛剛已經確定其中一個資料庫被我改了 SQL Server 的主機,所以應該是有 2 個一樣的,一個不一樣的字串,我們就 copy 那一個不同的字串,在 paste 到另外 2 個資料庫的欄位即可,如下是完成圖。

2012-09-30_0252112012-09-30_022002

 

終於弄完了,想說下次應該碰不到了吧,但還是寫起來,避免自己忘掉。   可以躺平了……

留言與評論


本篇文章的留言功能已關閉!