系統數據庫介紹
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,還原即可。