佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > SQL Server 移動系統(tǒng)數(shù)據(jù)庫

SQL Server 移動系統(tǒng)數(shù)據(jù)庫

熱門標(biāo)簽:服務(wù)外包 百度競價排名 地方門戶網(wǎng)站 鐵路電話系統(tǒng) Linux服務(wù)器 呼叫中心市場需求 AI電銷 網(wǎng)站排名優(yōu)化

說到這個問題,基本上有人就會想到三個問題:

1,什么是系統(tǒng)數(shù)據(jù)?

2,為什么要移動系統(tǒng)數(shù)據(jù)庫?

3,移動系統(tǒng)數(shù)據(jù)庫我們可以用附加和分離,為什么還要單獨拿出來說呢?

對于這三個問題我一個一個講吧,也算是自己做個筆記。

1,什么是系統(tǒng)數(shù)據(jù)?

所謂系統(tǒng)數(shù)據(jù)庫就是我們在裝SQL Server之后,系統(tǒng)自帶的數(shù)據(jù)庫(這樣的回答是不是很白癡^_^).

如果你裝SQL Server2005或2008在打開一個SQL實例后,就會看到一個數(shù)據(jù)庫--->系統(tǒng)數(shù)據(jù)庫文件夾,里邊就是系統(tǒng)自帶的數(shù)據(jù)庫,如圖:

對于每一個系統(tǒng)數(shù)據(jù)庫,這里我先用簡單的語言說一下:

1),master:

這個數(shù)據(jù)庫是全局?jǐn)?shù)據(jù)庫,它包含一些系統(tǒng)表,權(quán)限分配,用戶帳號設(shè)置,當(dāng)前數(shù)據(jù)庫配置信息以及關(guān)于磁盤空間,文件分配等信息。所以在執(zhí)行諸如用戶帳號設(shè)置,權(quán)限分配和改變系統(tǒng)配置信息后都要備份此數(shù)據(jù)。所以在這里強(qiáng)烈建議,不僅要經(jīng)常備份自己的數(shù)據(jù)庫,還有備份此數(shù)據(jù)庫,雖然不像備份自己數(shù)據(jù)庫那樣那么頻繁。至少半個月或一個月備份一次此數(shù)據(jù)庫。
在這里還有專門的一個數(shù)據(jù)庫大牛討論過是否應(yīng)該備份此數(shù)據(jù)庫:SQL SERVER – Backup master Database Interval – master Database Best Practices

2),model:

這個數(shù)據(jù)庫只是一個模板數(shù)據(jù)庫,我們在創(chuàng)建任意的一個數(shù)據(jù)庫的時候,都是復(fù)制此數(shù)據(jù)庫為新數(shù)據(jù)庫的基礎(chǔ),如果希望每一個新的數(shù)據(jù)庫都含有某些對象或者權(quán)限,可以把這個對象或權(quán)限放在此數(shù)據(jù)庫中,新創(chuàng)建的新數(shù)據(jù)庫都會繼承此數(shù)據(jù)的新對象或權(quán)限,并且擁有這些對象或權(quán)限。

3),msdb:

作者原話:SQL Server代理服務(wù)器會使用該數(shù)據(jù)庫,它會執(zhí)行一些列如備份和復(fù)制任務(wù)的計劃好的活動。Service Borker也會用到該數(shù)據(jù)庫,他為SQL Sever提供隊列和可靠消息傳遞。當(dāng)我們不在該數(shù)據(jù)庫執(zhí)行備份或維護(hù)任務(wù)時,通常可以忽略該數(shù)據(jù)庫。在SQL Server2005之前,實際上是可以刪除該數(shù)據(jù)庫的,只后SQL Server仍然可用,但不能在維護(hù)任何備份歷史了,并且不能夠在定義任務(wù),警告,工作或者建立復(fù)制,不過因為默認(rèn)的msdb數(shù)據(jù)庫非常小,建議即使用不到也不要刪除它。

4),tempdb:

該數(shù)據(jù)庫說白了,就是一個中轉(zhuǎn)站或數(shù)據(jù)寄存站,用戶顯示創(chuàng)建的臨時表,在查詢處理和排序時內(nèi)部所產(chǎn)生的中間結(jié)果的工作表,維護(hù)用的快照等,都會用到此數(shù)據(jù)庫,與其他數(shù)據(jù)庫所不同的是,在每次SQL Server實例重啟之后,都會重建而不是恢復(fù). 所以我們在其中創(chuàng)建的所有對象和權(quán)限在下次重啟SQL Server時都會全部丟失。
但是我們也不能忽略此數(shù)據(jù)庫,因為tempdb的大小和配置,對優(yōu)化SQL Server的功能和性能來說很重要。
對tempdb數(shù)據(jù)庫,還要多說幾句,雖然在tempdb每次被重建時,它會從model數(shù)據(jù)庫繼承大多數(shù)的數(shù)據(jù)庫選項,但是tempdb卻不會從modeldb數(shù)據(jù)庫中復(fù)制其恢復(fù)模式,因為它總是使用簡單恢復(fù)模式。另外,tempdb是無法刪除的,也不用備份。

2,為什么要移動系統(tǒng)數(shù)據(jù)庫?

我們在安裝SQL Server后默認(rèn)的這些系統(tǒng)數(shù)據(jù)庫都會放在C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA此文件夾下,一般的都不很大,為什么我們還有移動他們呢?
在沒有實踐管理服務(wù)器之前,我也沒有這個想法,但是我發(fā)現(xiàn)我的服務(wù)器C盤一直都在增加,或者萬一重裝系統(tǒng),我設(shè)置的數(shù)據(jù)庫選項,以及用戶賬戶設(shè)置都要重新設(shè)置,所以就有了這個想法。

還有一點就是作為重新布置計劃或安排好的維護(hù)操作的一部分,我們也許需要移動系統(tǒng)數(shù)據(jù)庫。

3,用附加和分離就可以,為什么還要單獨說呢?

回答這個問題之前,我們在看一張圖

注意到了嗎,在我選中master系統(tǒng)數(shù)據(jù)庫右擊,選中任務(wù)后,并沒有出現(xiàn)“分離”這個選項。那就說明移動這些系統(tǒng)數(shù)據(jù)庫是和用戶自定義的數(shù)據(jù)庫是不同的。

移動tempdb,model和msdb的步驟和移動master數(shù)據(jù)庫步驟稍微有點不同。

1),移動tempdb,model和msdb數(shù)據(jù)庫

i),移動一個沒有損壞的系統(tǒng)數(shù)據(jù)庫
首先讓我們用查詢命令看一下SQL Server默認(rèn)存儲這些系統(tǒng)數(shù)據(jù)庫的路徑;查詢命令:

SELECT name,physical_name AS CurrentLocation,state_desc
FROM sys.master_files

F5執(zhí)行,顯示如圖:

之后開始我們的移動之旅吧!

a),對數(shù)據(jù)庫中每個要移動的文件使用帶有MODIFY FILE選項的ALTER DATABASE命令來指定新的文件夾選項。如:               

--Move tempdb
ALTER DATABASE tempdb MODIFY FILE(NAME='tempdev',FILENAME='D:\Database\tempdb.mdf');
ALTER DATABASE tempdb MODIFY FILE(NAME = 'templog',FILENAME='D:\Database\templog.ldf');
--Move model
ALTER DATABASE model MODIFY FILE(NAME='modeldev',FILENAME='D:\Database\model.mdf');
ALTER DATABASE model MODIFY FILE(NAME='modellog',FILENAME='D:\Database\modellog.ldf');
--Move msdb
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBData',FILENAME='D:\Database\msdbdata.mdf');
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBLog',FILENAME='D:\Database\msdb_log.ldf');

b),在命令提示行下用NET STOP MSSQLSERVER命令停止SQL Server實例;

c),物理移動文件到我們定義的文件夾,比如上面所述D:\Database文件夾;

d),重啟SQL Server實例;

大功告成,然后在用上面的查詢來驗證更改,F(xiàn)5執(zhí)行,顯示如圖:


ii),由于硬件故障而需要移動系統(tǒng)數(shù)據(jù)庫

對于由于硬件故障而需要移動系統(tǒng)數(shù)據(jù)庫,上面的方法就不行了,因為我們可能無法訪問服務(wù)器來運行ALTER DATABASE命令。那我們就另外換一種解決方案!

a),如果SQL Server實例已經(jīng)啟動,那么停止該實例;

b),在命令提示行下,輸入下面的命令把SQL Server實例啟動到master-only恢復(fù)模式
NET START MSSQLSERVER /f /T3608

c),之后我們就能鏈接到服務(wù)器了,接下來就和上面”移動一個沒有損壞的系統(tǒng)數(shù)據(jù)庫 ”的步驟就一樣了。

注:如果直接用NET START MSSSQL SERVER命令來啟動SQL Server實例,會收到1814的錯誤提示。我們可以到“控制面板”-》“管理工具”-》“事件查看器”中看一下具體的錯誤日志。

2),移動master數(shù)據(jù)庫

移動master數(shù)據(jù)庫的位置和其他的系統(tǒng)數(shù)據(jù)庫不同是,只能用SQL Server 配置管理器來更改master的位置。

首先打開SQL Server配置管理器,右擊目標(biāo)SQL Server實例,選擇屬性,然后點擊高級標(biāo)簽,如圖所示:


在啟動參數(shù)中編輯各個參數(shù)的值來指向新的master數(shù)據(jù)庫數(shù)據(jù)文件和日志文件的目錄位置,如下:

d),D:\Database\master.mdf;
e),C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;
f),D:\Database\mastlog.ldf

然后停止SQL Server實例,把物理文件移動到新的文件夾下,比如我移動到D:\Database\目錄下;

最后啟動SQL Server實例,就大功告成了!如果要檢驗一下,就用上面所提到的檢驗語句,F5執(zhí)行,如圖所示:

總結(jié)下來,如果重裝系統(tǒng),又不想丟失原先數(shù)據(jù)庫設(shè)置的信息,大家可以學(xué)著移動一下系統(tǒng)數(shù)據(jù)庫,但腳本之家的小編覺得,移動不移動的另說,master表還是很有必要備份一下的。

您可能感興趣的文章:
  • SQL Server數(shù)據(jù)庫入門學(xué)習(xí)總結(jié)
  • SqlServer系統(tǒng)數(shù)據(jù)庫的作用深入了解
  • SQL Server 數(shù)據(jù)庫分離與附加(圖文教程)
  • 快速實現(xiàn)SQL Server數(shù)據(jù)庫恢復(fù)備份

標(biāo)簽:湖南 蘭州 黃山 湘潭 崇左 仙桃 銅川 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server 移動系統(tǒng)數(shù)據(jù)庫》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    湘潭市| 临颍县| 敖汉旗| 岚皋县| 博野县| 古交市| 屯门区| 灌阳县| 汝州市| 阜康市| 青阳县| 宾川县| 运城市| 和静县| 邯郸县| 兖州市| 比如县| 营口市| 积石山| 邵阳县| 襄城县| 北流市| 阳朔县| 白水县| 兴国县| 衡东县| 平乐县| 崇阳县| 宿迁市| 洪洞县| 亚东县| 上栗县| 富锦市| 丹寨县| 芜湖县| 元江| 凤台县| 永德县| 台湾省| 阿尔山市| 巨野县|