預設SQL Server安裝完成後,SQL Server的4個系統資料庫(Master,Model,MSDB和TempDB)都會被自動安放在安裝路徑下,也就是系統硬碟的Program Files檔案夾下。所帶來的問題就是絕大多數資料庫伺服器為了同時照顧到效能,成本和高可用性這三個方面,都會將系統安裝在一個Raid1陣列上,通常這個Raid1陣列還不一定會用上15K的SAS,有的只是用10K的SAS,更有甚者,為了成本,裝2個7.2K的SATA也就完事了。再加上Raid1陣列本身就是一種讀取效能非常強,但是寫入效能相當差的陣列形式,所以,對於系統資料庫,尤其是對TempDB資料庫來說,是非常不利的,也肯定會對整個SQL Server的效能造成影響。所以將系統資料庫遷移到一個效能更加高的陣列上,是一個解決硬體效能瓶頸的基礎解決方案。
下面就像大家介紹一下如何將系統資料庫遷移到其他分區上(以Microsoft SQL Server 2008 R2為例):
首先遷移master資料庫,master資料庫是整個SQL Server執行個體的核心,所有的設定都存放在master資料庫裡,如果master資料庫出現問題,整個執行個體都將癱瘓。首先開啟SQL Server Configuration Manager,在左邊的列表框中選中SQL Server Services節點,然後在右邊的列表框中找到需要遷移系統資料庫的執行個體的那個SQL Server服務,比如說SQL Server(MSSQLSERVER),停止這個執行個體的服務,然後按右鍵,選中最底下的"Properties",並且切換到"Advanced"標籤,如所示:
看到"Startup Parameters"了吧,這裡的參數就是需要我們更改的。如所示:
把這段字元整理一下就是這樣:
-dC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;
-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;
-lC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
基本上看出來了吧,"-d"後面的就是master資料庫資料檔案的位置,"-e"是該SQL Server執行個體的錯誤記錄檔所在的位置,至於"-l"就是master資料庫記錄檔所在的位置了。修改資料檔案和記錄檔的路徑到適當為位置,錯誤記錄檔的位置一般不需要做變更,例如將資料檔案存放到D盤的SQLData檔案夾下,記錄檔存放到E盤的SQLLog檔案夾下,則參數如下:
-dD:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lE:\SQLLog\mastlog.ldf
點擊"OK"儲存並關閉對話方塊。
然後需要做的是將master資料庫的資料檔案和記錄檔剪下到剛剛"Startup Parameters"定義的路徑中,接著就可以啟動該執行個體SQL Server服務了。
注意,此時可能仍然會有出現SQL Server服務無法啟動的情況,確保剛剛配置準確無誤,然後就是NTFS許可權的事情了,如果你不是用Local System來啟動SQL Server服務,那麼更改完存放路徑後,你需要給新的盤符或檔案夾相應的許可權,這樣服務才能啟動,建議直接給相應帳號"Full Control"的許可權,至於為什麼嘛,那是經驗,原因得要問Microsoft了。
好了,到這裡,master資料庫就算遷移完成了。
關於tempdb/msdb/model等其他系統資料庫的遷移可以參照另外一篇部落格:
http://www.cnblogs.com/Frank-Zhao/archive/2012/06/05/2537001.html