SQL SERVER-系統數據庫還原

 

系統數據庫介紹

 

master   記錄實例的系統信息(login,linkserver...),SQL SERVER啓動時打開的第一個數據庫。

model   SQL SERVER啓動時需要用它創建tempDB,無tempDB不能啓動。還原方式與用戶DB一樣。

msdb    保存代理,備份等信息。(默認該DB是簡單恢復模式,如果要對其備份計劃,則建議改爲完整恢復模式)還原方式與用戶DB一樣。

tempdb

Resource    一個只讀的數據庫,不會寫入數據。相同版本的sql server他們的resource數據庫是一樣的(可以手動備份文件),還原時停掉實例,手動放到相應路徑。

默認位置:C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn

 

 

還原數據庫SQL

--參數recovery意思是回滾未提交的事務好讓DB可用,norecovery意思不回滾未提交事務這樣還原完DB是不可用的。
restore database  database_name  from  backup_device  with recovery
--發生錯誤繼續還原,還原完查看錯誤日誌看遇到了哪些錯誤
restore database  database_name  from  backup_device  with continue_after_error,recovery

 

 

還原系統數據庫

 

還原master

 

1.要確保新的SQL SERVER和舊的版本一致。

--查詢的版本號要一致
select @@version

 

2.在備用服務器上停止所有SQL SERVER服務,以單用戶啓動SQL SERVER實例(我這裏指定用sqlcmd登陸)。

 

net start mssqlserver /m"SQLCMD"

 

3.sqlcmd連接

 

 

 4.還原master

 

還原完成後,實例自動停止

restore database master from disk='E:\master\master_backup_2020_03_27_114340_1691283.bak'  with replace

 

新實例也有master所以要採用覆蓋(with replace)不然會報錯

The backup set holds a backup of a database other than the existing 'master' database.

 

 

5.由於master記錄的是舊的系統DB路徑,如果和現在的不同的話,直接啓動會失敗,所以要加個跟蹤標誌3608來啓動,然後修改路徑不同的系統DB的路徑。

如果2臺系統DB路徑是相同的則可直接正常啓動。

net start MSSQLSERVER /f /m /T3608

 

 

--mssqlsystemresource
alter database mssqlsystemresource modify file(name=data,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\mssqlsystemresource.mdf')
alter database mssqlsystemresource modify file(name=log,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\mssqlsystemresource.ldf')

--msdb
alter database msdb modify file(name=MSDBData,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\msdbdata.mdf')
alter database msdb modify file(name=MSDBLog,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\msdblog.ldf')

--model
alter database model modify file(name=modeldev,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\model.mdf')
alter database model modify file(name=modellog,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\modellog.ldf')

--tempdb
alter database tempdb modify file(name=tempdev,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\tempdb.mdf')
alter database tempdb modify file(name=tempdev,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\tempdb.ldf')

 

 

6.我這次2臺系統DB的路徑是相同的,所以就直接啓動了,

 

還原msdb

restore database  msdb from  disk='E:\msdb\msdb_backup_2020_03_27_114340_3878743.bak' 
with move 'MSDBData' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\msdbdata.mdf',
move 'MSDBLog' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\msdblog.ldf',
replace

 

還原model

 

restore database  model from  disk='E:\model\model_backup_2020_03_27_114340_2316265.bak' 
with move 'modeldev' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\model.mdf',
move 'modellog' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\modellog.ldf',
replace

 

 

7.修改服務器名

因爲master是舊的那臺的,所以他保存的是舊的服務器名

--查詢服務器名
select  @@servername


--刪除舊的,添加當前的
sp_dropserver'oldservername'
go

sp_addserver 'newservername','local'
go

 

實例重啓後即生效。

 

 

8.這時實例級的job.linkserver,login等都已配置到了新的一臺,但是用戶數據是懷疑狀態,因爲還沒有還原用戶DB,還原即可。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章