搜尋本站文章

2011-04-07

更換磁碟,複製資料到新的磁碟之注意事項:以 SQL Server 為例,事件識別碼:17058,作業系統錯誤 = 5(存取被拒)

若是因故要將舊的磁碟,整個更換為新的磁碟,可能的情境:
1. 磁碟效能不佳,需要更換磁碟。
2. 磁碟空間不足,需要更換磁碟。
3. 磁碟已有問題,需要更換磁碟。
4. 磁碟已屆年限,需要更換磁碟。
...

一般的作法是:
將 SQL Server 包含資料、資料夾整個複製到新的磁碟上,再利用更換磁碟機代號的方式來達成。


但若是使用「檔案總管」方式來執行複製資料的作業,但這可能未留意到各個檔案以及資料夾上的權限,是沒否有沒有一併同步過去。




筆者這邊使用在 Windows Server 2008、Windows 7 作業系統上內建的 ROBOCOPY.exe 公用程式來執行同步兩個磁碟區內的資料,請參考以下的範例程式碼1與下圖1所示:


ROBOCOPY F: Z: /MIR /SEC

使用的參數說明:
/MIR:鏡像樹狀目錄 (相當於 /E 加 /PURGE)。
/SEC:複製包含安全性的檔案 (相當於 /COPY:DATS)。



要提醒你,請記得要務必要將資料夾與檔案的權限,均需一併完整複製到新的磁碟區上。




假若是當此SQL Server的服務啟動帳戶是採取最小權限原則之方式來設計,這將造成SQL Server服務啟動帳戶無法存取新的磁碟區上的資料,也就無法啟動服務。


在Windows事件檢視器內可以觀察到以下的錯誤訊息,請參考下圖2所示:

事件識別碼:17058,initerrlog: 無法開啟錯誤記錄檔 'F:\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG'。作業系統錯誤 = 5(存取被拒)。


當然,若是不考慮安全性,提昇 SQL Server、SQL Server Agent 服務啟動帳戶的權限具備本機管理者之特權時,也是可以解決此問題。


參考資料:
設定 Windows 服務帳戶
http://msdn.microsoft.com/zh-tw/library/ms143504.aspx

Windows Server 2003 Resource Kit Tools:包含:ROBOCOPY.exe 公用程式
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en

權限時複製與移動檔案及資料夾的處理方式
http://support.microsoft.com/kb/310316/zh-tw