The log scan number (3079:456:1) passed to log scan in database 'master' is not valid. This error may indicate data corruption or that he log file (.ldf) does not match the data file (.mdf).

master db壞真的好麻煩, 處理方法都不同, 不過它只是SQL的結構資料, 相信不會有多大改動, 找到一個近期的backup已經不作考慮data lost問題, 直接restore吧, 如果其他database壞就不會用以下的方法, 因為SQL能online, 方法可以好簡單

我的解決方法是重新安裝一台相同版本,相同機名, 相同Instance的SQL, 然後將master.bak那台SQL上還原, 原因是這台SQL的single mode都進入不到

Production是SQL 2008 R2 10.50.4000
Restore的是SQL 2008 R2 10.50.1600(原來是Patch版本都要一樣), 全新沒有數據

Part 1: Restore master db

master.bak已經抄到Restore的SQL Server, Instance是MSSQLSERVER

net stop MSSQLSERVER
net start MSSQLSERVER /m

sqlcmd -S localhost\MSSQLSERVER

RESTORE DATABASE master FROM DISK ='C:\master.bak'
WITH REPLACE
GO

以下這個是因為版本不一

以下是成功例子

這時master.mdf & mastlog.ldf已經還原了, 可以抄到Production裏使用

Part 2: 將沒有權限的User加入為sysadmin

不過我還是不安心, 我將所有資料庫抄到Restore裏測試一下, 結果估計我這個Windows administrator在Production裏是沒有權限, 而且我沒有sa密碼, 再次進入single mode增加administrator為sysadmin

net stop MSSQLSERVER
net start MSSQLSERVER /m

sqlcmd -S localhost\MSSQLSERVER

EXEC sp_addsrvrolemember 'DOMAIN\administrator', 'sysadmin';
GO

然後所有資料都真的可以看到了

Comments

No comments yet. Why don’t you start the discussion?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*