--置資料庫為單用戶模抄式
alter database db_name set single_user with rollback immediate
go
--重建數襲據庫日誌文件
alter database db_name Rebuild Log on (name=log_name,filename='C:\log_name.ldf')
go
--最後設置資料庫為多用戶模式。
alter database dbname set multi_user
通過以上方法修復資料庫後,可以dbcc checkdb一下資料庫,如果發現頁級錯誤,可以通過以下命令修復。
『貳』 mysql日誌文件詳解
MySQL資料庫的日誌文件主要分為三種類型:binlog日誌、redo日誌和undo日誌。
1. binlog日誌 作用:binlog日誌是MySQL上層產生的邏輯日誌,記錄了所有對MySQL資料庫執行更改的操作,主要適用於數據恢復、復制和審計。 配置參數: max_binlog_size:規定了單個日誌文件的最大值,達到後會生成新文件。 binlog_cache_size:二進制緩沖大小,影響性能。 sync_binlog:控制寫入磁碟的頻率。 binlog_format:決定日誌格式。
2. redo日誌 作用:redo日誌以物理格式記錄對每個頁的修改,實現事務的持久性。包含內存中的重做日誌緩沖和重做日誌文件。 參數:innodb_flush_log_at_trx_commit控制日誌刷新策略,包括不刷新、事務提交時刷新和在文件系統緩存中刷新。 結構:redo日誌以512位元組為單位,組成重做日誌塊和重做日誌組。LSN表示日誌總量、checkpoint位置和頁版本。InnoDB在啟動時會嘗試恢復LSN在checkpoint之後的數據。
3. undo日誌 作用:undo日誌用於恢復事務和實現MVCC,存儲在資料庫共享表空間中。 結構:每個回滾段記錄1024個undo log segment,由rollback segment文件、個數和文件數量構成。 事務處理:事務提交後,undo log會被放入鏈表等待purge操作最終刪除。redo日誌和undo日誌在事務過程中會產生,需要持久性保護。InnoDB在事務提交時會將undo log放入鏈表,並判斷undo頁是否可以重用,以供下個事務使用。purge線程最終完成update和delete操作。
這些日誌文件在MySQL資料庫的運行、備份、恢復、復制以及審計等方面扮演著關鍵角色,合理配置和管理這些日誌文件對於確保資料庫的穩定性和性能至關重要。
『叄』 SQLSERVER資料庫置疑、可疑、離線、單用戶、緊急模式等的修復
此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器,按右鍵,選擇「屬性」在「伺服器設置」頁面中將「允許對系統目錄直接修改」一項選中。
2.設置eisdoc為緊急修復模式
update sysdatabases set status=-32768 where dbid=DB_ID(『eisdoc『) 關閉打開企業管理器,此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於「只讀\置疑\離線\緊急模式」可以看到資料庫裡面的表,但是僅僅有系統表
3.重建資料庫日誌文件
dbcc rebuild_log(『eisdoc『,『E:\Microsoft SQL Server\Data\eisdoc_log.ldf『) 執行過程中,如果遇到下列提示信息: 伺服器: 消息 5030,級別 16,狀態 1,行 1 未能排它地鎖定資料庫以執行該操作。 DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。 說明您的其他程序正在使用該資料庫,如果剛才您在F步驟中使用SQL Server Enterprise Manager打開了eisdoc庫的系統表,那麼退出SQL Server Enterprise Manager就可以了。(關閉企業管理器,如果別的機器從網路訪問資料庫,也把網路關閉) 正確執行完成的提示應該類似於: 警告: 資料庫 『eisdoc『 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB 以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌文件。 DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。 此時打開在SQL Server Enterprise Manager裡面會看到資料庫的狀態為「只供DBO使用」此時可以訪問資料庫裡面的用戶表了。
4.驗證資料庫一致性(可省略)
dbcc checkdb(『iBusinessWork『) 一般執行結果如下: CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 『eisdoc『 中)。 DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
5.設置資料庫為正常狀態
sp_dboption 『eisdoc『,『dbo use only『,『false『 如果沒有出錯,那麼現在就可以正常的使用恢復後的資料庫啦。
6.關閉「允許對系統目錄直接修改」一項。
因為平時直接操作系統表是一件比較危險的事情。當然,我們可以在SQL Server Enterprise Manager裡面恢復。
sqlserver2008資料庫可疑文件的修復方式:
1.設置資料庫狀態,腳本:EXEC sp_resetstatus 『eisdoc『
2.設置資料庫為緊急模式,腳本:ALTER DATABASE eisdoc SET EMERGENCY
3.設置資料庫為單用戶模式(對資料庫檢查修復只能在單用戶模式下),腳本:ALTER DATABASE eisdoc SET SINGLE_USER
4.檢查並修復資料庫,會提示你修復資料庫可能丟失數據,正常應該不會丟失資料庫數據,但是資料庫日誌的完整性將受到破壞,腳本:DBCC CheckDB (eisdoc, REPAIR_ALLOW_DATA_LOSS)
5.恢復資料庫為多用戶模式,腳本:ALTER DATABASE eisdoc SET MULTI_USER
--恢復資料庫狀態ALTERDATABASEdbNameSETONLINE
以上五步即可修復sqlserver2008中的可疑文件
原文鏈接:http://blog.sina.com.cn/s/blog_61feb2110101e2ez.html
SQLSERVER資料庫置疑、可疑、離線、單用戶、緊急模式等的修復
『肆』 SQL 2008 可疑狀態,資料庫好像損壞了
樓主,你好!這類問題我自己沒有碰到過,當然也就沒有經驗。我這邊有一個可以參考的網址,你可以去看看,或許有所幫助。
網址1:http://www.itpub.net/thread-49776-1-1.html(這個也是斷電)
網址2:http://www.itpub.net/tree/index_105_1/(這個是MSSQLServer問題的總目錄)
另,附圖兩張。
以上希望能幫助到你。
『伍』 資料庫「置疑」該怎麼處理
解決由於sql2000日誌文件引起的「置疑」。
日誌有錯誤--------重新附加提示日誌有錯誤。
日誌文件丟失-----丟失了.ldf文件,只有.mdf文件的資料庫重建。
步驟:
一、備份「置疑」資料庫的數據文件,因為日誌文件.ldf出錯,可以只備份.mdf文件。
二、打開企業管理器(SQL Server Enterprise Manager),刪除「置疑」資料庫,如果提示刪除錯誤,可以重啟資料庫伺服器,然後再試。
三、在企業管理器中,新建同名資料庫(假如資料庫為test),注意建立的資料庫名稱,還有數據文件名要保持和原資料庫一致。
四、停止資料庫伺服器。
五、將剛才新建資料庫生成的資料庫的日誌文件test_log.ldf刪除,用要恢復的資料庫.mdf文件覆蓋剛才生成的資料庫數據文件test_data.mdf。
六、啟動資料庫伺服器。此時會看到資料庫test的狀態為「置疑」。這時候不能對此資料庫進行任何操作。
七、設置資料庫允許直接操作系統表。此操作可以在企業管理器(SQL Server Enterprise Manager)裡面選擇資料庫伺服器,按右鍵,選擇「屬性」,在「伺服器設置」頁面中將「允許對系統目錄直接修改」一項選中。也可以使用如下語句來實現。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
八、設置test為緊急修復模式 。
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此時可以在企業管理器(SQL Server Enterprise Manager)裡面看到該資料庫處於「只讀\置疑\離線\緊急模式」可以看到資料庫裡面的表,但是僅僅有系統表。
九、下面執行真正的恢復操作,用dbcc rebuild_log命令來重建資料庫日誌文件(重建路徑根據你實際的資料庫路徑來)。
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
執行過程中,如果遇到下列提示信息:
伺服器: 消息 5030,級別 16,狀態 1,行 1
未能排它地鎖定資料庫以執行該操作。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
說明您的其他程序正在使用該資料庫,如果剛才您在八步驟中使用企業管理器打開了test庫的系統表,那麼退出企業管理器就可以了。
正確執行完成的提示應該類似於:
警告: 資料庫 'test' 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB 以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌文件。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
此時打開在企業管理器裡面會看到資料庫的狀態為「只供DBO使用」。此時可以訪問資料庫裡面的用戶表了。
十、驗證資料庫一致性。(次步驟可省略)
dbcc checkdb('test')
一般執行結果如下:
CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 'test'中)。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
十一、設置資料庫為正常狀態
sp_dboption 'test','dbo use only','false'
如果沒有出錯,那麼恭喜,現在就可以正常的使用恢復後的資料庫啦。
十二、最後一步,我們要將步驟七中設置的「允許對系統目錄直接修改」一項恢復。因為平時直接操作系統表是一件比較危險的事情。當然,我們可以在企業管理器裡面恢復,也可以使用如下語句完成
sp_configure 'allow updates',0
go
reconfigure with override
go
對於只有.mdf文件的sql2000資料庫恢復,從第三步開始做就行了。
最好的方法為先分離然後附加看下
1.我們SQL SERVER企業管理器新建立一個供恢復使用的同名資料庫(注意:要跟問題資料庫同名,本例中為myDb)。
2.停掉資料庫伺服器。
3.將剛才生成的資料庫的日誌文件myDb_log.ldf刪除(本例中的示列資料庫名,實際使用您自己的資料庫名稱),用剛才備份的資料庫mdf文件覆蓋新生成的資料庫數據文件myDb_data.mdf。
4.啟動資料庫伺服器。此時會看到資料庫myDb的狀態為「置疑」。這時候不能對此資料庫進行任何操作。
5.設置資料庫允許直接操作系統表。此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器,按右--鍵,選擇「屬性」,在「伺服器設置」頁面中將「允許對系統目錄直接修改」一項選中。也可以使用如下語句來實現。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go F.設置myDb為緊急修復模式
在查詢管理器里設置如下命令:
update sysdatabases set status=-32768 where dbid=DB_ID('stib')此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於「只讀\置疑\離線\緊急模式」可以看到資料庫裡面的表,但是僅僅有系統表
6.下面執行真正的恢復操作,重建資料庫日誌文件
dbcc rebuild_log('stib','E:\zz\stib_log.ldf')警告: 資料庫 'myDb' 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB 以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌文件。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
此時打開在SQL Server Enterprise Manager裡面會看到資料庫的狀態為「只供DBO使用」。此時可以訪問資料庫裡面的用戶表了。
7.驗證資料庫一致性(可省略)
dbcc checkdb('stib')一般執行結果如下:
CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 'myDb' 中)。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
sp_dboption 'stib','single user','true'--設置為單用戶
dbcc checkdb('stib','REPAIR_ALLOW_DATA_LOSS')--這個語句可能執行幾遍之後有效
sp_dboption 'stib','single user','false'--取消單用戶
8.設置資料庫為正常狀態
sp_dboption 'stib','dbo use only','false'
9.最後一步,我們要將步驟E中設置的「允許對系統目錄直接修改」一項恢復。因為平時直接操作系統表是一件比較危險的事情。當然,我們可以在SQL Server Enterprise Manager裡面恢復,也可以使用如下語句完成
sp_configure 'allow updates',0
go
reconfigure with override
go
到此資料庫置疑問題解決。
『陸』 修復sql2000置疑數據資料庫,在重新創建日誌文件時報錯,該
資料庫數據恢復成功案例分享,提供對面臨類似問題的參考。
資料庫恢復環境描述:某品牌伺服器搭載兩組RAID,一組RAID1包含兩塊硬碟,另一組RAID5包含五塊硬碟,存放SqlServer資料庫。
資料庫故障情況:由於數據量增加,資料庫分區空間不足,管理員在另一個分區創建.ndf文件並調整資料庫路徑,後續資料庫出現連接失效、無法附加查詢的故障。
數據恢復流程:工程師首先備份所有存儲數據的磁碟,進行數據恢復分析。分析顯示,由於資料庫文件所在分區空間不足,導致邏輯錯誤。考慮到管理員嘗試恢復資料庫過程中文件被覆蓋,無法直接修復。幸運的是,管理員在故障發生前備份了一份資料庫文件。
執行資料庫修復:嘗試附加備份文件,但失敗,提示主次文件不匹配。分析.ndf文件底層,發現數據量極少,嘗試解除關聯後附加.mdf文件也失敗,提示日誌文件與資料庫文件不匹配。通過無資料庫附加操作,資料庫附加成功,但系統表受損,無法正常使用。
系統表修復與重構:資料庫數據恢復工程師針對嚴重損壞的系統表進行修復嘗試,未果。解析資料庫文件,編寫程序提取記錄,分析備份獲取表結構,重構表並導入新數據。
數據驗證:管理員驗證提取數據,確認所有信息完整恢復。此案例提醒大家,合理分配資料庫文件磁碟空間,及時清理垃圾數據,確保資料庫正常運行。
『柒』 MS SQL 資料庫出現損壞(可疑)的修復方法
MS SQL 資料庫出現損壞的修復方法如下:
關閉資料庫實例服務:
備份資料庫文件:
刪除並重建資料庫結構:
重建日誌文件並設置資料庫模式:
檢查資料庫完整性:
注意事項: 在進行上述操作前,請確保已備份所有重要數據,以防操作過程中出現數據丟失。 如果不熟悉SQL Server的資料庫修復操作,建議尋求專業資料庫管理員的幫助。