master 數據庫還原新問題
--1.版本問題
問題描述:
在新服務器上還原老服務器的master數據庫:
RESTOREDATABASEMASTER
FROMDISK='C:/TMP/SQLSYS20050516.BAK'
WITHFILE=1
出現以下錯誤:
服務器:消息3168,級別16,狀態1,行1
無法還原設備C:/TMP/SQLSYS20050516.BAK上的系統數據庫備份,因為創建該數據庫的服務器版本(134218488)與此服務器的版本(134217922)不同。
服務器:消息3013,級別16,狀態1,行1
RESTOREDATABASE操作異常終止。
問題原因:
必須保證新服務器的版本和要還原的master數據庫的版本完全一致,包括補丁的版本
--2.系統數據庫目錄問題
問題描述:
還原過程是正常結束的,系統提示:
已成功地還原了master數據庫。正在關閉SQLServer。
SQLServer正在終止此進程。
然后啟動MSSQLSERVER服務,系統提示:在本地計算機無法啟動MSSQLSERVER服務。服務并未返回錯誤。這可能是一個WINDOWS內部錯誤或服務內部錯誤。
問題分析:
不能啟動有很多種可能,由于還原的提示是成功的,所以估計數據庫備份沒有什么問題,應該從啟動過程著手去分析問題。下面逐步驗證猜想和查找問題原因
--a.驗證master備份文件的正確性
將master備份文件還原為普通數據為,結果一切正常:
RESTOREDATABASEa
FROMDISK='C:/TMP/SQLSYS20050516.BAK'
WITHFILE=1,
MOVE'master'TO'c:/a.mdf',
MOVE'mastlog'TO'c:/a.ldf',
REPLACE
GO
USEa
GO
EXECsp_msforeachtable'select*from?'
GO
DROPDATABASEa
--b.檢查SQLServer服務的啟動信息
在命令提示符下執行:
sqlservr-c-m
收到的啟動信息中,與不能啟動SQLServer服務相關的錯誤信息如下:
2005-05-2614:51:47.11spid5啟動數據庫“model”。
2005-05-2614:51:47.11spid5udopen:創建/打開物理設備C:/ProgramFiles/MicrosoftSQLServer/MSSQL$ERP/data/model.mdf時發生操作系統錯誤3(系統找不到指定的路徑。)。
2005-05-2614:51:47.16spid5FCB::Openfailed:未能為虛擬設備號(VDN)1打開設備C:/ProgramFiles/MicrosoftSQLServer/MSSQL$ERP/data/model.mdf。
可以看出啟動時是按老服務器的數據庫安裝路徑來打開數據庫,而新服務器的數據庫安裝路徑與老服務器是不同的,這就是master還原后不能啟動sqlserver的原因
--c.解決方法分析
model數據庫的數據文件信息保存在master數據庫的系統表sysdatabases和sysdevices中,只需要想辦法修改這兩個表中的目錄信息,使其符合新的服務器目錄要求即可。
--d.解決示例
--===========================================================
--1.還原master數據庫的備份為普通數據庫
--===========================================================
RESTOREDATABASEa
FROMDISK='C:/TMP/SQLSYS20050516.BAK'
WITHFILE=1,
MOVE'master'TO'c:/a.mdf',
MOVE'mastlog'TO'c:/a.ldf',
REPLACE
GO
--===========================================================
--2.修改sysdatabases和sysdevices表各系統數據庫的目錄為新服務器的目錄
--我的電腦中,sql數據庫目錄(d:/ProgramFiles/MicrosoftSQLServer/MSSQL/data--如果有需要的話,其他系統數據庫也做類似的修改(修改前,可以查詢這兩個表中的值,以決定如何修改)
--===========================================================
EXECsp_configure'allowupdates',1
RECONFIGUREWITHOVERRIDE
GO
UPDATEa.dbo.sysdatabasesSET
filename='d:/ProgramFiles/MicrosoftSQLServer/MSSQL/data/model.mdf'
WHERENAME='model'
UPDATEa.dbo.sysdevicesSET
phyname='d:/ProgramFiles/MicrosoftSQLServer/MSSQL/data/modellog.ldf'
WHERENAME='modellog'
GO
EXECsp_configure'allowupdates',0
RECONFIGUREWITHOVERRIDE
GO
--===========================================================
--3.份修改后的數據庫
--===========================================================
BACKUPDATABASEa
TODISK='C:/TMP/SQLSYS20050516.BAK'
WITHINIT
GO
--===========================================================
--4.在新服務器上,以單用戶模式啟動sql,然后執行類似下面的恢復語句以恢復master數據庫
--===========================================================
RESTOREDATABASEMASTER
FROMDISK='C:/TMP/SQLSYS20050516.BAK'
WITHFILE=1
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
