sqlserver 数据库文件损坏、数据库可疑修复处理
生活随笔
收集整理的這篇文章主要介紹了
sqlserver 数据库文件损坏、数据库可疑修复处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據庫文件損壞、數據庫可疑了首先不要往數據庫文件所在的磁盤寫入任何數據文件,此電腦暫時先不要往磁盤寫入任何東西,也不要在sql編輯器里去刪除數據庫。
一、先停止sqlsever服務,將數據庫MDF文件和LOG文件復制到C盤系統盤下,然后壓縮復制到另一臺數據庫機上,如果出現無法復制,將該數據庫所在盤,右鍵,屬性,檢查文件系統錯誤(勾上修復磁盤文件錯誤),修復完成后,再復制。
二、數據庫文件復制過來后,用以下方法進行修復
sqlserver 數據只有mdf文件,如何附加
1、新建一個同名的數據庫
2、停止sql服務,刪除新建數據庫.ldf文件,將拷貝過來的原mdf文件直接覆蓋新建數據庫的mdf文件,并重啟服務
3、?這時數據庫DATA目錄下只有一個.mdf文件,啟動sql server Management studio --新建查詢
use master Goalter database 數據庫名 set emergency go --置數據庫為單用戶模式 alter database db_name set SINGLE_USER go --重建數據庫日志文件,路徑存放在DATA所在目錄底下 alter database 數據庫名 Rebuild Log on (name=數據庫名_log,filename='D:\..\data\數據庫名_log.ldf') go --最后設置數據庫為多用戶模式。 alter database 數據庫名 set multi_user--通過以上方法修復數據庫后,可以dbcc checkdb一下數據庫,如果發現頁級錯誤,可以通過以下命令修復。 --這兩個命令要在單用戶的情況下使用Use master go alter database [數據庫名] SET SINGLE_USER --設置為單用戶模式 dbcc checkdb(數據庫名,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(數據庫名,REPAIR_REBUILD)--最后設置為多用戶模式 alter database 數據庫名 set multi_user--這樣數據庫就修復回來了 OK4、修復好數據庫后運行卡慢的話也可以DBCC修復一下表,重建一下索引
--DBCC前同樣要改成單用戶模式 DBCC checktable ('students', REPAIR_ALLOW_DATA_LOSS) DBCC DBREINDEX('students') ..... --DBCC完后要改回多用戶模式--表重建索引 IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[students]') AND name = N'students_Index')DROP INDEX [students_Index] ON [dbo].[students] WITH ( ONLINE = OFF ) CREATE NONCLUSTERED INDEX [students_Index] ON [dbo].[students] ([id] ASC )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]5、如果有的表insert失敗時,提示主鍵重復沖突,可以重置一下表的最大值
select max(id) from students --取出最大id值32584. dbcc checkident(students, reseed, 32585) --重置最大值.總結
以上是生活随笔為你收集整理的sqlserver 数据库文件损坏、数据库可疑修复处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我们是怎样发出声音的?
- 下一篇: SqlServer 数据库可疑修复