日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ais文件还原到mysql_SQLSERVER 数据库可疑的解决步骤

發布時間:2025/3/12 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ais文件还原到mysql_SQLSERVER 数据库可疑的解决步骤 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

異常關機后,金蝶帳套突然無法訪問,發現數據庫置疑,使用此方案解決:

注意:在做任何修復操作之前,請務必備份.mdf/.ndf以及.ldf文件。

一般情況下這樣可以解決:

1、將數據庫設置為應急狀態

ALTER DATABASE AIS20150723104254 SET emergency

2、將數據庫設置為單用戶模式

ALTER DATABASE AIS20150723104254 SET SINGLE_USER

3、對數據庫進行檢查修復

DBCC CheckDB (AIS20150723104254, REPAIR_ALLOW_DATA_LOSS)

REPAIR_ALLOW_DATA_LOSS代表,若此錯誤不能修復時,系統將直接刪除相關數據。

DBCC ?checkdb (AIS20150723104254, REPAIR_REBUILD)

嘗試直接修復數據庫錯誤

使用上面兩個語句進行數據庫檢查修復,如果返回結果中沒有了紅色的提示文字,說明修復成功

此數據庫執行CHECKDB的過程中發現一些表的索引被破壞,于是針對具體的表進行重建索引的操作:

DBCC DBREINDEX(表名)

完成后可以運行dbcc checkdb(db_name)檢查數據庫的完整性.

4、最后,取消單用戶模式即可。

exec sp_dboption AIS20150723104254, N'single', N'false'

ALTER DATABASE AIS20151130094910 SET MULTI_USER

日志文件損壞或丟失時,可以嘗試此方法:

方法一:

先停止數據庫服務,備份數據文件(MDF/LDF):

A. 我們使用默認方式建立一個供恢復使用的數據庫(如AIS20131106110002)??梢栽赟SQL Server Management Studio里面建立。

B. 停掉數據庫服務器。

C. 將剛才生成的數據庫的日志文件AIS20131106110002_log.ldf刪除,用要恢復的數據庫mdf文件覆蓋剛才生成的數據庫數據文件AIS20131106110002_data.mdf。

D. 啟動數據庫服務器。此時會看到數據庫AIS20131106110002的狀態為“置疑”。這時候不能對此數據庫進行任何操作。

E. 設置數據庫允許直接操作系統表。此操作可以在SQL Server Management Studio里面選擇數據庫服務器,按右鍵,選擇“屬性”,在“服務器設置”頁面中將“允許對系統目錄直接修改”一項選中。也可以使用如

下語句來實現。

use ? master

go

sp_configure 'allow updates',1

go

reconfigure with override

go

F. 設置AIS20131106110002為緊急修復模式

alter database AIS20131106110002 set emergency

此時可以在SQL Server Management Studio里面看到該數據庫處于“只讀\置疑\脫機\緊急模式”可以看到數據庫里面的表,但是僅僅有系統表

G. 下面執行真正的恢復操作,重建數據庫日志文件

dbcc ? rebuild_log( 'AIS20131106110002 ', 'D:\MSSQL2008\Data\AIS20131106110002_log.ldf ')

SQL 2012版本以后版本時:

alter database AIS20131106110002 Rebuild Log on (name=AIS20131106110002_log,filename='D:\MSSQL2008\AIS20131106110002_log.ldf')

執行過程中,如果遇到下列提示信息:

服務器: ? 消息 ? 5030,級別 ? 16,狀態 ? 1,行 ? 1

未能排它地鎖定數據庫以執行該操作。

DBCC ? 執行完畢。如果 ? DBCC ? 輸出了錯誤信息,請與系統管理員聯系。

打開單用戶模式即可

ALTER DATABASE AIS20131106110002 SET SINGLE_USER

alter database AIS20131106110002 set SINGLE_USER with ROLLBACK IMMEDIATE

警告: ? 數據庫 ? 'AIS20131106110002 ' ? 的日志已重建。已失去事務的一致性。應運行 ? DBCC ? CHECKDB ? 以驗證物理一致性。

DBCC ? 執行完畢。如果 ? DBCC ? 輸出了錯誤信息,請與系統管理員聯系。

此時可以訪問數據庫里面的用戶表了。

H. 驗證數據庫一致性(可省略)

dbcc ? checkdb( 'AIS20131106110002 ')

一般執行結果如下:

CHECKDB ? 發現了 ? 0 ? 個分配錯誤和 ? 0 ? 個一致性錯誤(在數據庫 ? 'AIS20131106110002 ' ? 中)。

DBCC ? 執行完畢。如果 ? DBCC ? 輸出了錯誤信息,請與系統管理員聯系。

如果發現出問題,可使用下面方法嘗試修復:

一、

dbcc checkdb(AIS20131106110002,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(AIS20131106110002,REPAIR_REBUILD)

二、

使用Repair_Allow_Data_Loss選項修復數據庫。

優點: 可能可以恢復盡量多的數據

缺點:

a) ?不一定能夠將全部錯誤修復,還有可能越修越多。同時,需要大量時間,需要經過多次執行修復命令.十幾次,甚至數十次.修復時間不能預估.

b) ?就算我們將所有錯誤修復,我們也不能保證數據在應用程序邏輯這一層次上的數據正確性,您需要找您的應用程序提供商來檢查數據在程序邏輯層次是否正確。

dbcc checkdb (‘’, REPAIR_ALLOW_DATA_LOSS) go

—此命令可能需要運行多次,才能完全修復。

三、

通過BCP,DTS,select into等方式將好的表,或者表中好的數據導出來。建議使用BCP的方法,這樣可以最大限度的回復數據.BCP會停在出錯的紀錄上,但是前面的數據就能成功導出.使用DTS或Select into的話, 我們很難判斷最大限度能導出的記錄數.

優點:導出來的數據保證在應用程序邏輯這一層次的正確性

缺點:不會修復數據庫中存在的錯誤,丟失的數據量會比較大,取決于第7步的運行結果。

二和三摘自:

I. 設置數據庫為正常狀態

exec sp_dboption AIS20131106110002, N'single', N'false'

ALTER DATABASE AIS20131106110002 SET MULTI_USER

如果沒有出錯,那么恭喜,現在就可以正常的使用恢復后的數據庫啦。

J. 最后一步,我們要將步驟E中設置的“允許對系統目錄直接修改”一項恢復。因為平時直接操作系統表是一件比較危險的事情。當然,我們可以在SQL Server Management Studio里面恢復,也可以使用如下語句完

use master

go

sp_configure 'allow updates',0

go

reconfigure with override

go

注意,SQL2012后,系統無sp_dboption這個存儲過程,可以用附件文本的方式,在MASTER中創建此存儲過程即可。

方法二:

1、把問題數據庫文件備份到其它目錄

停掉SQLSERVER服務,把服務器上出問題的數據庫, 假設名稱為 ErrorDB的數據庫文件及日志文件備份復制到其他目錄,然后直接將其刪除,把其數據庫文件及日志文件也刪除

2、新建同名數據庫

啟動SQLSERVER服務,新建同名數據庫ErrorDB,文件目錄和文件名和原來一致

3、用備份的數據庫文件替換新的數據庫文件

停掉SQLSERVER服務,把備份的數據庫文件替換新的數據庫文件(只替換數據庫文件,不替換日志文件)

啟動SQLSERVER服務,打開數據庫,這時數據庫應該是不能訪問的

-------------------設置應急模式、單用戶模式、檢查修復數據,取消單用戶模式----------------------

4、將數據庫設置為應急狀態

alter database ErrorDB set emergency

執行后,為了保險起見,重新停止、開啟的SQLSERVER服務

再打開數據庫,已經可以看到里面的內容了,如表,視圖,存儲過程等

數據庫名稱后有緊急標志,能看到數據庫結構,但無法進行備份等操作

5、將數據庫設置為單用戶模式

ALTER DATABASE ErrorDB SET SINGLE_USER

6、對數據庫進行檢查修復

dbcc checkdb(ErrorDB,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(ErrorDB,REPAIR_REBUILD)

操作后,仍然停止啟動SQLSERVER服務(不確定是否需要,我只是為了想無干擾查看執行后的數據庫狀況)

7、取消單用戶模式即可

exec sp_dboption ErrorDB, N'single', N'false'

ALTER DATABASE ErrorDB SET MULTI_USER

總結

以上是生活随笔為你收集整理的ais文件还原到mysql_SQLSERVER 数据库可疑的解决步骤的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。