涂華燕
(江蘇旅游職業(yè)學院,江蘇 揚州 225007)
在使用SQL Server的過程中,通常會遇到下面的三種情況:
1.如何將數(shù)據(jù)庫從一個SQL Server服務器移到另一個SQL Server服務器上
2.如果數(shù)據(jù)庫文件所在的磁盤空間用完了怎么辦?
3.系統(tǒng)數(shù)據(jù)庫在安裝的時候默認保存在C盤的文件夾中,通常情況下所占空間不是很大,但隨著使用的時間越長,使用頻率越高,系統(tǒng)數(shù)據(jù)庫所占存儲空間會越來越大。另外之前設置的數(shù)據(jù)庫選項,以及用戶賬戶設置在重新安裝計算機系統(tǒng)后都需要重新設置。
針對以上使用中的問題,本文對SQL數(shù)據(jù)庫進行分析,討論上述三種情況的解決方案,研究數(shù)據(jù)庫的移動方法。
SQL Server作為目前廣為使用的關系型數(shù)據(jù)庫管理系統(tǒng),其中包含系統(tǒng)數(shù)據(jù)庫和用戶自定義數(shù)據(jù)庫。
1.系統(tǒng)數(shù)據(jù)庫
系統(tǒng)數(shù)據(jù)庫是有SQL Server系統(tǒng)創(chuàng)建和維護的數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫中記錄了SQL Server所有的配置情況、任務情況和用戶數(shù)據(jù)庫情況等系統(tǒng)管理的信息。
(1)master數(shù)據(jù)庫
通常系統(tǒng)的信息都是存放在此數(shù)據(jù)庫中,比如用戶注冊的賬戶信息,在使用中對于SQL系統(tǒng)所做的信息設置,還有用戶自定義的數(shù)據(jù)庫初始化的記錄信息、位置存儲的信息。另外在作為系統(tǒng)的主數(shù)據(jù)庫,在一些情況下是需要備份的,比如用戶賬號、權(quán)限、系統(tǒng)配置這些信息在執(zhí)行設置、分配或改變的時候,如果master這個主數(shù)據(jù)庫出現(xiàn)問題,無法使用的話,SQL Server系統(tǒng)也是沒有辦法使用的。
(2)tempdb數(shù)據(jù)庫
此數(shù)據(jù)庫只要是能夠連上SQL Server服務器的用戶都能夠使用它,沒有特別的權(quán)限要求。它記錄了所有的臨時表、臨時數(shù)據(jù)和臨時創(chuàng)建的存儲過程。可以把它看成一個中間寄存數(shù)據(jù)站,比如在查詢時的查詢結(jié)果或者是排序的時候得到的排序表以及臨時創(chuàng)建的顯示的表等,都是存儲在此數(shù)據(jù)庫中,總之此數(shù)據(jù)庫中存放的信息數(shù)據(jù)都是臨時的。
在使用過程中如果SQL Server連接斷開時,存放在此數(shù)據(jù)庫中的數(shù)據(jù)表以及存儲過程會自動刪除掉。當系統(tǒng)每次重新啟動的時候,?tempdb數(shù)據(jù)庫都會由SQL Server依據(jù)model數(shù)據(jù)庫重新創(chuàng)建起來,在每次被重建時,它會從model數(shù)據(jù)庫繼承大多數(shù)的數(shù)據(jù)庫選項。SQL Server的功能和性能的優(yōu)化很大程度上取決于此數(shù)據(jù)庫的大小和配置,所以此數(shù)據(jù)庫是很重要的。
(3)model數(shù)據(jù)庫
用戶創(chuàng)建新數(shù)據(jù)庫都是用到model數(shù)據(jù)庫,它起到一個新建數(shù)據(jù)庫模板的作用,當用戶新建數(shù)據(jù)庫時復制到其中的系統(tǒng)表就來自于它。當通過命令執(zhí)行數(shù)據(jù)庫創(chuàng)建時,新數(shù)據(jù)庫前面部分是通過復制此數(shù)據(jù)庫來實現(xiàn)的,而給用戶存放數(shù)據(jù)的被初始化的空白數(shù)據(jù)頁是新數(shù)據(jù)庫的后面的部分。
作為在系統(tǒng)上創(chuàng)建的所有數(shù)據(jù)庫的模板,新數(shù)據(jù)庫的創(chuàng)建都是以復制model數(shù)據(jù)庫為基礎,如果對于新創(chuàng)建的數(shù)據(jù)庫有特別的權(quán)限要求或需要含有某些對象,比如數(shù)據(jù)庫的大小、排列順序、恢復模式等,那么可以把這些對象或者是特殊的權(quán)限存放在這個數(shù)據(jù)庫中,這些對于此數(shù)據(jù)庫進行的修改都將用于以后創(chuàng)建的所有新數(shù)據(jù)庫。
(4)msdb數(shù)據(jù)庫
Msdb數(shù)據(jù)庫是代理服務數(shù)據(jù)庫,當SQL Server Agent進行任務調(diào)度、復制以及代理計劃報警等活動時,此數(shù)據(jù)庫為其提供存儲空間。在排除故障時經(jīng)常會用它調(diào)度任務進行排除,此數(shù)據(jù)庫在SQL Sever中起著提供隊列以及傳遞可靠消息的作用。通常如果此數(shù)據(jù)庫不需要執(zhí)行維護任務或者備份的時候,一般可以不考慮它。
2.用戶數(shù)據(jù)庫
系統(tǒng)提供的示例數(shù)據(jù)庫以及用戶自定義創(chuàng)建的數(shù)據(jù)庫在SQL Server都屬于用戶數(shù)據(jù)庫。在安裝時,如果選擇默認安裝,就不會安裝示例數(shù)據(jù)庫??梢缘轿④浌俜骄W(wǎng)站下載示例數(shù)據(jù)庫并安裝。
用戶自定義創(chuàng)建的數(shù)據(jù)庫也就是用戶根據(jù)實際對象的管理需求自行創(chuàng)建的數(shù)據(jù)庫。
問題一通常處理的方法是創(chuàng)建一個新數(shù)據(jù)庫,然后通過備份和還原移動數(shù)據(jù)庫;問題二通常是在另一個磁盤上增加一個輔助數(shù)據(jù)文件。顯然這兩種辦法都比較復雜,SQL Serve中分離和附加數(shù)據(jù)庫技術可以方便快捷的解決以上兩種問題。
通過分離數(shù)據(jù)庫的數(shù)據(jù)和事務日志文件,然后將其重新附加到另一臺服務器,甚至同一臺服務器上。但分離和附加數(shù)據(jù)庫的技術只支持用戶自定義數(shù)據(jù)庫,無法分離系統(tǒng)數(shù)據(jù)庫,而通過移動系統(tǒng)數(shù)據(jù)庫可以解決問題三,下面分別介紹著兩種數(shù)據(jù)庫的移動方法的實現(xiàn)。
1.用戶數(shù)據(jù)庫的移動
以用戶自定義的數(shù)據(jù)庫為例,通過存儲過程EXEC sp_attach_db實現(xiàn)將本地D:data文件夾中的教學管理數(shù)據(jù)庫附加到當前的SQL系統(tǒng)中。代碼如下:
通過存儲過程sp_detach_db實現(xiàn)將當前SQL Server系統(tǒng)中的教學管理數(shù)據(jù)庫分離出來,保存在默認的磁盤文件夾中。具體代碼如下:
EXEC sp_detach_db’教學管理’
2.系統(tǒng)數(shù)據(jù)庫的移動
通過以下代碼查看SQL Server默認存儲這些系統(tǒng)數(shù)據(jù)庫的路徑
通過F5執(zhí)行結(jié)果可以看出四個系統(tǒng)數(shù)據(jù)庫在C盤中。
而移動 master和 model、msdb、tempdb 這三個移動方法不一樣,下面分別介紹
(1)model、msdb、tempdb 移動
首先通過ALTER DATABASE命令來移動每個數(shù)據(jù)庫文件,指定新的文件夾選項,執(zhí)行結(jié)果如下:
此時model、msdb、tempdb三個系統(tǒng)數(shù)據(jù)庫文件的路徑由之前的C盤改為D盤,然后通過cmd命令提示符界面,通過命令停止SQL實例,執(zhí)行結(jié)果如下:
然后從本來默認的C盤的存儲文件夾找到待移動的系統(tǒng)文件,剪切移動到更改后的D盤存儲文件夾中。
(2)移動master數(shù)據(jù)庫
在SQL Server配置管理器中,通過SQL SERVER服務中的屬性面板中的高級標簽選項,如下圖:
將master數(shù)據(jù)庫數(shù)據(jù)文件和事務日志文件的目標存儲位置在啟動參數(shù)里更改成新的參數(shù)值來重新指定,以本數(shù)據(jù)庫為例,把本來存儲在C盤中的master.mdf以及 mastlog.ldf兩個文件改存到 D 盤的Database文件夾中,再通過 NETSTOP MSSQLSERVER命令停止SQL Server實例,把待移動的master文件移動到新目標存儲地址D:Database中,然后重新啟動SQL Server實例,就可以實現(xiàn)master數(shù)據(jù)庫的移動了。
本文主要是針對沒有損壞的數(shù)據(jù)庫的移動方法的實現(xiàn),如果是由于硬件故障而需要移動系統(tǒng)數(shù)據(jù)庫,以上方法就不適用了,還有待進一步研究。
[1]袁 霞.基于SQL Server數(shù)據(jù)庫的性能優(yōu)化淺談[J].信息安全與技術,2016,(3):25-26.
[2]羅小平,王福兆.SQL Server數(shù)據(jù)備份策略的選擇[J].計算機系統(tǒng)應用,2005,(5):30.