Sqlserver系統資料庫和使用者資料庫日誌檔案全部丟失的恢復
系統資料庫和使用者資料庫日誌都丟失的情況下,資料庫無法啟動,需要先重建系統資料庫日誌檔案以便把sqlserver service拉起來,再重建使用者資料庫
試過但是行不通的辦法
1、-mClient單使用者模式下啟動資料庫並重建系統資料庫日誌,即使用net start "SQL Server (MSSQLSERVER)" -m"Microsoft SQL Server Management Studio - Query"進入資料庫重建系統資料庫日誌,出現報錯,系統資料庫日誌不允許重建
System databases master, model, and tempdb cannot have their logs rebuilt.
2、設定啟動項-T3608,即在SQL Server Configuration Manager裡面對應的sqlserver service服務新增啟動項引數-T3608,sqlserver service伺服器還是起不來
-T3608 禁止 SQL Server 自動啟動和恢復除 master 資料庫之外的任何資料庫。
3、使用安裝包repair現有sqlserver例項,行不通,因為repair其實是需要sqlserver例項有startup handle,而系統資料庫日誌都丟失的情況下,sqlserver例項壓根無法啟動,也就麼有startup handle的概念,所以repair一個沒有系統資料庫日誌的sqlserver例項會報錯:Could not find the Database Engine startup handle
4、完全解除安裝,再重新安裝,這個時候是可以把資料庫拉起來的,不過master庫的東西和msdb庫的東西都丟失了,不過可以重建msdb庫,重建msdb的前提是master和model庫必須正常,也就是一個資料庫能用,必須保證master和model庫正常,因為一個sqlserver 例項能否使用必須有tempdb,而tempdb依賴model,model依賴master
Sqlserver系統資料庫和使用者資料庫日誌檔案丟失的恢復方法
1、系統資料庫有備份的話,可以把系統資料庫以重新命名的方式當成使用者資料庫恢復到其他例項,但是必須保證恢復後的資料檔案和日誌檔案的名稱和之前一樣,再把恢復後的資料檔案和日誌檔案複製回出問題的例項。比如A例項的系統資料庫master的日誌檔案丟失了,可以把A例項的master庫恢復到B例項master_test庫,但是必須保證B的master_test庫的資料檔案和日誌檔名稱和A庫的master庫的資料檔案和日誌檔名稱一致,再把B的master_test庫的資料檔案和日誌檔名稱複製回A例項master庫對應的目錄,這樣A例項就可以啟動了
2、如果系統資料庫沒有備份,則在其他例項上建立一個資料庫,資料檔案和日誌檔名稱和丟失的系統資料庫一樣,再把新建的資料庫offline,把這個新建資料庫的資料檔案和日誌檔案改名或複製到其他目錄,再把丟失日誌的系統資料庫資料檔案複製到這個新建資料庫的對應的目錄,再執行rebuild log,這樣這個資料檔案就自動生成了日誌檔案,再把這個系統資料庫資料檔案和日誌檔案複製回丟失系統資料庫日誌檔案的目錄,這時這個曾經丟失了系統資料庫日誌檔案的sqlserver例項就可以啟動了,參見如下示例
假如A例項的master和model和msdb的日誌檔案都丟了
2.1、在B例項建立和master、model、msdb同名資料庫檔案FILENAME的使用者資料庫master_test、model_test、msdb_test
CREATE DATABASE [master_test] ON PRIMARY(NAME = N'master', FILENAME = N'E:\master.mdf') LOG ON (NAME = N'mastlog', FILENAME = N'E:\mastlog.ldf') GO CREATE DATABASE [model_test] ON PRIMARY(NAME = N'modeldev', FILENAME = N'E:\model.mdf') LOG ON (NAME = N'modellog', FILENAME = N'E:\modellog.ldf') GO CREATE DATABASE [msdb_test] ON PRIMARY(NAME = N'MSDBData', FILENAME = N'E:\msdbdata.mdf') LOG ON (NAME = N'MSDBLog', FILENAME = N'E:\MSDBLog.ldf') GO
2.2、在B例項對這三個使用者資料庫master_test、model_test、msdb_test進行offline離線操作
alter database [master_test] set offline alter database [model_test] set offline alter database [msdb_test] set offline
2.3、再在B例項把master_test、model_test、msdb_test資料檔案和日誌檔案複製到其他目錄或改名,再把A例項的master、model、msdb資料檔案複製到B例項master_test、model_test、msdb_test資料庫對應目錄,再執行REBUILD LOG,這樣A例項的master、model、msdb資料檔案其實就有日誌檔案,把這些資料檔案和日誌複製會A例項對應目錄,A例項就可以啟動了
ALTER DATABASE [master_test] REBUILD LOG ON (NAME=master_log, FILENAME='E:\mastlog.ldf'); ALTER DATABASE [model_test] REBUILD LOG ON (NAME=modellog, FILENAME='E:\modellog.ldf'); ALTER DATABASE [msdb_test] REBUILD LOG ON (NAME=MSDBLog, FILENAME='E:\msdblog.ldf');
會有如下警告,說明生成了新的日誌檔案
Warning: The log for database 'master_test' has been rebuilt. Transactional consistency has been lost. The RESTORE chain was broken, and the server no longer has context on the previous log files, so you will need to know what they were. You should run DBCC CHECKDB to validate physical consistency. The database has been put in dbo-only mode. When you are ready to make the database available for use, you will need to reset database options and delete any extra log files.
Warning: The log for database 'model_test' has been rebuilt. Transactional consistency has been lost. The RESTORE chain was broken, and the server no longer has context on the previous log files, so you will need to know what they were. You should run DBCC CHECKDB to validate physical consistency. The database has been put in dbo-only mode. When you are ready to make the database available for use, you will need to reset database options and delete any extra log files.
Warning: The log for database 'msdb_test' has been rebuilt. Transactional consistency has been lost. The RESTORE chain was broken, and the server no longer has context on the previous log files, so you will need to know what they were. You should run DBCC CHECKDB to validate physical consistency. The database has been put in dbo-only mode. When you are ready to make the database available for use, you will need to reset database options and delete any extra log files.
3、再回到A例項,在A例項執行如下語句,把生成的語句再執行一遍就可以rebuild 使用者資料庫的日誌檔案,並設定資料庫的訪問限制為多使用者
select 'ALTER DATABASE ['+db_name(database_id)+'] REBUILD LOG ON (NAME='+name+', FILENAME='''+physical_name+''');' from master.sys.master_files where type_desc='LOG' and database_id>4 select 'ALTER DATABASE ['+db_name(database_id)+'] SET MULTI_USER WITH NO_WAIT' from master.sys.master_files where type_desc='LOG' and database_id>4
備註:目前官方文件沒有ALTER DATABASE REBUILD LOG的操作,sqlserver不推薦這種操作
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2777662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】LINUX EXT3檔案系統下ORACLE資料庫誤操作導致資料丟失的資料恢復案例資料庫資料恢復LinuxOracle
- DATA GUARD主庫丟失資料檔案的恢復(3)
- DATA GUARD主庫丟失資料檔案的恢復(1)
- DATA GUARD主庫丟失資料檔案的恢復(2)
- 【伺服器資料恢復】xfs檔案系統資料丟失的資料恢復案例伺服器資料恢復
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【北亞資料恢復】vmfs還原快照操作導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 【北亞資料恢復】誤操作分割槽損壞導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- 【資料庫資料恢復】EXT3檔案系統下MYSQL資料庫恢復案例資料庫資料恢復MySql
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- macOS Big Sur系統如何恢復丟失的資料檔案?Mac
- 電腦檔案丟失資料恢復資料恢復
- 教你自動恢復MySQL資料庫的日誌檔案(binlog)MySql資料庫
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 伺服器資料恢復—重灌系統導致XFS檔案系統分割槽丟失的資料恢復案例伺服器資料恢復
- SqlServer資料庫資料恢復報告SQLServer資料庫資料恢復
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 【伺服器資料恢復】SAN LUN對映出錯導致檔案系統資料丟失的資料恢復案例伺服器資料恢復
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- 【資料庫資料恢復】linux系統下MYSQL資料庫資料恢復案例資料庫資料恢復LinuxMySql
- 資料誤操作,刪庫跑路?教你使用ApexSQLLog工具從 SQLServer日誌恢復資料!SQLServer
- 伺服器資料恢復-誤操作導致mysql資料庫資料丟失的資料恢復案例伺服器資料恢復MySql資料庫
- 資料庫資料恢復—SQLserver資料庫中勒索病毒被加密怎麼恢復資料?資料庫資料恢復SQLServer加密
- SqlServer資料庫恢復備份資料的方法SQLServer資料庫
- 資料庫資料恢復-SQL SERVER資料庫檔案大小變為“0”的資料恢復方案資料庫資料恢復SQLServer
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- 伺服器資料恢復-ext3檔案系統下oracle資料庫資料恢復案例伺服器資料恢復Oracle資料庫
- 【北亞資料恢復】sqlserver資料庫被加密的資料恢復案例分享資料恢復SQLServer資料庫加密
- 【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例資料庫資料恢復MongoDB