SQL置疑REPAIR_REBUILD修復(fù)_第1頁
SQL置疑REPAIR_REBUILD修復(fù)_第2頁
SQL置疑REPAIR_REBUILD修復(fù)_第3頁
SQL置疑REPAIR_REBUILD修復(fù)_第4頁
SQL置疑REPAIR_REBUILD修復(fù)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、寒山 sql 數(shù)據(jù)庫修復(fù)中心 出錯狀態(tài) :現(xiàn)象 1:數(shù)據(jù)庫后面有“置 疑”字樣,查看系統(tǒng)事 務(wù)日記出現(xiàn)以 下錯誤: 錯誤1 錯誤: 823,嚴(yán)重度 : 24,狀態(tài) : 2I/O error 23( 數(shù) 據(jù) 錯 誤 ( 循 環(huán) 冗 余 檢 查 ) 。 ) detected during read at offset 0x00000000200000 in file 捷 作 2008datatest_Data.MDF'. 錯 誤 2 錯誤: 3313,嚴(yán)重度 : 21,狀態(tài) : 2恢復(fù)數(shù)據(jù)庫 '' 的日志中記錄的操作時出錯。出錯位置在日志記錄ID (274:377:2)。錯

2、誤 3 錯誤: 3313,嚴(yán)重度 : 21,狀態(tài) : 2Error while redoing logged operation in database 'test'. Error at log record ID (274:377:2). 數(shù)據(jù)庫可以分離,但分離后無法附加,附加時出現(xiàn)“823”號錯誤。 微 軟 公 司 SQL 聯(lián)機(jī)從書解釋 :錯誤 823 嚴(yán)重級別 24消息正文 在文件 ''%4!'' 的偏移量 %3! 處的 %2! 過程中, 檢測到 I/O 錯誤 %1!。 解 釋Microsoft? SQL Server? 在對某設(shè)備進(jìn)行讀或

3、寫請求時遇到 I/O 錯誤。該錯誤通常表明 磁盤問題。但是,錯誤日志中在錯誤 823 之前記錄的其它核心消息應(yīng)指出涉及了哪個設(shè)備。 對策檢查該設(shè)備的可訪問性和狀態(tài)。如果可能,執(zhí)行硬件診斷并糾正問題。 從最新的數(shù)據(jù) 庫備份還原損壞的文件。從數(shù)據(jù)庫備份中還原應(yīng)始終是修復(fù)已損壞數(shù)據(jù)庫的首選方法。如果沒有備份或者檢測到的錯誤是孤立的,則DBCC CHECKDB勺修復(fù)功能可能很有用。然而,比起從備份中還原損壞的文件,可能使用DBCC CHECKDB消耗的時間更多,且可能無法恢復(fù)全部數(shù)據(jù)。注意??如果使用修復(fù)子句運(yùn)行DBCC CHECKDB時,問題沒有得到糾正,或者不知道該過程將如何影響數(shù)據(jù), 請與主要的

4、支持提供者聯(lián)系。 出錯原因 :通常這個問題是由于硬盤空 間不夠/硬盤讀寫錯誤/忽然斷電(停電/死機(jī)),SQL系統(tǒng)異常。1. 日志文件被破壞 823 錯誤 日志文件被破壞的數(shù)據(jù)庫文件, 通過如下方法附加上去后, 數(shù)據(jù)庫里所有的表都不能訪 問,提示錯誤 832,請問要如何解決?use master gosp_configure 'allow updates',1 goreconfigure with override go/* 注意輸正確,如果輸入后執(zhí)行此語句,并且下面顯示DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。已將配置選項'allow up

5、dates'從0改為1。請運(yùn)行 RECONFIGURE語句以安裝。說明執(zhí)行正確,如果不顯示以上信息,請檢查是否有輸錯!此語句是的作用是:設(shè)置數(shù)據(jù)庫允許直接操作系統(tǒng)表。*/update sysdatabases set status=-32768 where dbid=DB_ID('icyqshsf') /* 設(shè)置數(shù)據(jù)庫為緊急 修復(fù)模式。 */ godbccrebuild_log('icyqshsf','e:ProgramFilesMicrosoftSQLServerMSSQLDataicyqshsf_log.ldf)/* 重新數(shù)據(jù)庫日志(ldf)

6、文件。下面顯示 :警告:數(shù)據(jù)庫'test'的日志已重建。已失去事務(wù)的一致性。應(yīng)運(yùn)行DBCC CHECKDBA驗 證物理一致性。將必須重置數(shù)據(jù)庫選項,并且可能需要刪除多余的日志文件。*/ godbcc checkdb('icyqshsf')/* 現(xiàn)在檢查有沒有錯誤,再輸入語法 下面顯示CHECKDB發(fā)現(xiàn)了 0個分配錯誤和 0個一致性錯誤(在數(shù)據(jù)庫 'tiger' 中)。那說明第6步就建立成功沒問題了,下面就可以把SQL恢復(fù)模式了 */ gosp_dboption 'icyqshsf','dbo use only',&

7、#39;false' gosp_configure 'allow updates',0 go reconfigure with override go2. 附加數(shù)據(jù)庫文件時 ,提示 823 錯誤 EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE /* 打開修改系統(tǒng)表的 開關(guān) */update sysdatabases set status = 32768 where name = ' 數(shù)據(jù)庫名 ' DBCC REBUILD_LOG (數(shù)' 據(jù)庫名 '

8、, 'E: dzzdatabase dzz1204_Log.LDF' ) update sysdatabases set status = 0 where name = '數(shù) 據(jù)庫名 ' restore database 數(shù)據(jù)庫名 WITH RECOVERYEXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE /* 關(guān)閉打開修改系統(tǒng) 表的開關(guān) */3因為停電等原因造成 MSSQL數(shù)據(jù)庫,提示823錯誤 USE MASTER GOsp_dboption 'database

9、Name', 'single user', 'true' GoDBCC CHECKDB('databaseName', REPAIR_REBUILD) GoUSE databaseName goexec sp_msforeachtable 'DBCC CHECKTABLE('''?''',REPAIR_REBUILD)' gosp_dboption 'databaseName', 'single user', 'false' G

10、o 如果還不行,可以采用允許丟失數(shù)據(jù) 的方式修復(fù),如下: USE MASTER GOsp_dboption 'databaseName', 'single user', 'true' GoDBCC CHECKDB('databaseName', REPAIR_ALLOW_DATA_LOSS) GoUSE databaseName goexec sp_msforeachtable 'DBCC CHECKTABLE('''?''',REPAIR_REBUILD)' gos

11、p_dboption 'databaseName', 'single user', 'false' Go=修 復(fù) 方 法 恢復(fù)語句 :-drop database wgy -create database wgy-RESTORE FILELISTOYNfLrom disk='F:data1218wgy.db' ALTER DATABASE wgy SET OFFLINE WITH ROLLBACKIMMEDIATE restore database wgy from disk='F:data1218wgy.db'

12、with replace,MOVE 'Syb_Data' TO 'D:DataNPDFDN.mdf', MOVE 'Syb_Log' TO 'D:DataNPDFDN.ldf'ALTER DATABASE wgy SET ONLINE WITH ROLLBACK IMMEDIAT法 一:1. 新建一個同名的數(shù)據(jù)庫2.再停掉 sql server3. 用 mdf 和 ldf 數(shù)據(jù)庫的文件覆蓋掉這個新建的同名數(shù)據(jù)庫4.再重啟 sql server5. 此時打開企業(yè)管理器時新建的同名數(shù)據(jù)庫會出現(xiàn)置疑,先不管,執(zhí)行下面的語句(注 意修改其

13、中的數(shù)據(jù)庫名 )USE MASTER GOSP_CONFIGURE 'ALLOW UpdateS',1 RECONFIGURE WITH OVERRIDE GOUpdate SYSDATABASES SET STATUS =32768 Where NAME='aaa' Gosp_dboption 'aaa', 'single user', 'true' GoDBCC CHECKDB('aaa') Goupdate sysdatabases set status =28 where name='

14、;aaa' Go sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption 'aaa', 'single user', 'true' Go6. 完成后一般就可以訪問數(shù)據(jù)庫中的數(shù)據(jù)了,這時 ,數(shù)據(jù)庫本身一般還要問題 ,解決辦法是 ,利用數(shù)據(jù)庫的腳本創(chuàng)建一個新的數(shù)據(jù)庫,并將數(shù)據(jù)導(dǎo)進(jìn)去就行了 . 方法二:1. 新建一個同名的數(shù)據(jù)庫2.再停掉 sql server3. 用 mdf 和 ldf 數(shù)據(jù)庫的文件覆蓋掉這個新建的同名數(shù)據(jù)庫4. 再重啟

15、sql server5.此時打開企業(yè)管理器時新建的同名數(shù)據(jù)庫會出現(xiàn)置疑,先不管,執(zhí)行下面的語句(注 意修改其中的數(shù)據(jù)庫名 ) USE MASTER GOSP_CONFIGURE 'ALLOW UpdateS',1 RECONFIGURE WITH OVERRIDE GO Update SYSDATABASES SET STATUS =32768 Where NAME='aaa' Go sp_dboption 'aaa', 'single user', 'true' GoDBCC REBUILD_LOG ('

16、aaa', 'C:Program FilesMicrosoft SQL ServerMSSQLDataaaa_Log2.LDF' )Goupdate sysdatabases set status = 0 where name = 'aaa' Go restore database aaa WITH RECOVERY-如果表有錯的話用DBCC CHECKTABL來進(jìn)行修復(fù) goDBCC CHECKDB('aaa')Goupdate sysdatabases set status =28 where name='aaa' G

17、o sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption 'aaa', 'single user', 'true' Go6.完成后一般就可以訪問數(shù)據(jù)庫中的數(shù)據(jù)了,這時 ,數(shù)據(jù)庫本身一般還要問題 ,解決辦法是 ,利用數(shù)據(jù)庫的腳本創(chuàng)建一個新的數(shù)據(jù)庫,并將數(shù)據(jù)導(dǎo)進(jìn)去就行了 . 方法三:.非置疑數(shù)據(jù)庫修復(fù)技術(shù) :USE MASTER GO sp_dboption 'aaa', 'single user', '

18、true' Go-無損修復(fù)DBCC CHECKDB('aaa', REPAIR_REBUILD)-有損修復(fù)- DBCCCHECKDB('ke_2008',repair_allow_data_loss) WITH TABLOCK-如果表有錯的話用DBCC CHECKTABL來 進(jìn)行修復(fù) Gosp_dboption 'aaa', 'single user', 'false' Go 方法四: /*- 重置置疑狀態(tài) 系統(tǒng)方法 : 如果 sql server 因為磁盤驅(qū)動器不再有可用空間,而不能完成數(shù)據(jù)庫的恢復(fù),那么

19、microsoft? sql server? 2000 會返回錯誤 1105并且將 sysdatabases 中的 status 列設(shè)為置疑。按下面的步驟解決這個問題:執(zhí)行sp_resetstatus 。 語法為:sp_resetstatus 'aaa' sp_resetstatus ' 數(shù)據(jù)庫名 '用 alter database 向數(shù)據(jù)庫添加一個數(shù)據(jù)文件或日志文件。 停止并重新啟動 sql server 。 用新的數(shù)據(jù)文件或日志文件所提供的額外空間, sql server 應(yīng)該能完成數(shù)據(jù)庫的恢復(fù)。釋放磁盤空間并且重新運(yùn)行恢復(fù)操作。sp_resetstatus

20、 關(guān)閉數(shù)據(jù)庫的置疑標(biāo)志,但是原封不動地保持?jǐn)?shù)據(jù)庫的其它選項。-*/方法五:-手工重置置疑狀態(tài)use master gosp_configure 'allow updates',1 reconfigure with override godeclare dbname varchar(30) set dbname='lqgs' if trancount > 0print '正在進(jìn)行事務(wù)處理 ,操作不能進(jìn)行 ' else if suser_id()!=1print ' 你 不 是 系 統(tǒng) 管 理 員 (sa), 不 能 進(jìn) 行 此 操 作

21、 ' else if not exists(select 1 from master.sysdatabases where name=dbname) print ' 你要操作的數(shù)據(jù)庫不存在' else if notexists(select 1 from master.sysdatabases where name= dbname and status & 256 = 256)print '你的數(shù)據(jù)庫沒有被置疑 ' else beginbegi n tran update master.sysdatabases set status = stat

22、us A 256 where n ame = db name if error != 0 or rowcount != 1 rollback tran else begincommit tranprint '操作成功 ,請重新啟動 SQL' end end gosp_configure 'allow updates', 1 reconfigure with override gosp_resetstatus lqgs 方法六:重置置疑狀態(tài)如果 SQL Server 因為磁盤驅(qū)動器不再有可用空間,而不能完成數(shù)據(jù)庫的恢復(fù),那么Microsoft? SQL Serve

23、r? 2000 會返回錯誤 1105 并且將 sysdatabases 中的 status 列設(shè)為置疑。按下面的步驟解決這個問題: 1. 執(zhí)行 sp_resetstatus。2. 用Alter DATABASE向數(shù)據(jù)庫添加一個數(shù)據(jù)文件或日志文件。3.停止并重新啟動SQL Serve。用新的數(shù)據(jù)文件或日志文件所提供的額外空間, SQL Server 應(yīng)該能完成數(shù)據(jù)庫的恢 復(fù)。4. 釋放磁盤空間并且重新運(yùn)行恢復(fù)操作。sp_resetstatus 關(guān)閉數(shù)據(jù)庫的置疑標(biāo)志,但是原封不動地保持?jǐn)?shù)據(jù)庫的其它選項。注意 只有在您的主要支持提供者指導(dǎo)下或有疑難解答建議的做法時,才可以使用sp_resetstat

24、us。否則,可能會損壞數(shù)據(jù)庫。由于該過程修改了系統(tǒng)表,系統(tǒng)管理員必須在創(chuàng)建這個過程前,啟用系統(tǒng)表更新。要啟用更新,使用下面的過程: USE master GOsp_configure 'allow updates', 1 GORECONFIGURE WITH OVERRIDE GO過程創(chuàng)建后,立即禁用系統(tǒng)表更新: sp_configure 'allow updates', 0 GORECONFIGURE WITH OVERRIDE GO只有系統(tǒng)管理員才能執(zhí)行sp_resetstatus。執(zhí)行該過程后,立即關(guān)閉SQL Serve。語法為:sp_resetstatu

25、s aaa下面的例子將關(guān)閉 PRODUCTION 數(shù)據(jù)庫的置疑標(biāo)志。 sp_resetstatus PRODUCTION 下 面是結(jié)果集:Database 'PRODUCTION' status reset!WARNING: You must reboot SQL Server prior to accessing this database! sp_resetstatus 存 儲過程代碼下面是 sp_resetstatus 存儲過程的代碼:IF EXISTS( Select * from sysobjects where name = 'sp_resetstatus&

26、#39; )Drop PROCEDURE sp_resetstatus GOCreate PROC sp_resetstatus dbname varchar(30) AS DECLAREmsg varchar(80) IF trancount > 0 BEGINPRINT 'Can''t run sp_resetstatus from within a transaction.' RETURN (1) ENDIF suser_id() != 1 BEGINSelect msg = 'You must be the System Administr

27、ator (SA)' Select msg = msg + ' to execute this procedure.' RETURN (1) ENDIF (Select COUNT(*) FROM master.sysdatabases Where name = dbname) != 1 BEGIN Select msg = 'Database ' + dbname + ' does not exist!' PRINT msg RETURN (1) END IF (Select COUNT(*) FROM master.sysdataba

28、sesWhere name = dbname AND status & 256 = 256) != 1 BEGINPRINT 'sp_resetstatus can only be run on suspect databases.' RETURN (1) ENDBEGIN TRANUpdate master.sysdatabases SET status = status A 256 Where n ame = db nameIF error != 0 or rowcount != 1 ROLLBACK TRAN ELSE BEGIN COMMIT TRANSelec

29、t msg = 'Database ' + dbname + ' status reset!' PRINT msg PRINT ''PRINT 'WARNING: You must reboot SQL Server prior to ' PRINT ' accessing this database!' PRINT '' ENDMS Sql Server 提供了很多數(shù)據(jù)庫修復(fù)的命令,當(dāng)數(shù)據(jù)庫置疑或是有的無法完成 讀取時可以嘗試這些修復(fù)命令。1. DBCC CHECKDB重啟服務(wù)器后,在沒有進(jìn)行任何

30、操作的情況下,在SQL查詢分析器中執(zhí)行以下SQL進(jìn)行數(shù)據(jù)庫的修復(fù),修復(fù)數(shù)據(jù)庫存在的一致性錯誤與分配錯誤。use masterdeclare databasename varchar(255)set database name='需要修復(fù)的數(shù)據(jù)庫實體的名稱'exec sp_dboption databasename, N'single', N'true' - 將目標(biāo)數(shù)據(jù)庫置為單用戶狀態(tài)dbcccheckdb(databasename,REPAIR_ALLOW_DATA_LOSS)dbcccheckdb(databasename,REPAIR_REB

31、UILD)exec sp_dboption databasename, N'single', N'false'- 將目標(biāo)數(shù)據(jù)庫置為多用戶狀態(tài)然后執(zhí)行DBCC CHECKDB需要修復(fù)的數(shù)據(jù)庫實體的名稱')檢查數(shù)據(jù)庫是否仍舊存在錯 誤。注意:修復(fù)后可能會造成部分?jǐn)?shù)據(jù)的丟失。2. DBCC CHECKTABLE如果DBCC CHECKDB檢查仍舊存在錯誤,可以使用DBCC CHECKTABL來修復(fù)。use 需要修復(fù)的數(shù)據(jù)庫實體的名稱 declare dbname varchar(255)set dbname=' 需 要 修 復(fù)的 數(shù) 據(jù)庫 實 體的 名

32、 稱 ' exec sp_dboption dbname,'single user','true'dbcc checktable('需要修復(fù)的數(shù)據(jù)表的名稱,REPAIR_ALLOW_DATA_LOSS)dbcc checktable(' 需要修復(fù)的數(shù)據(jù)表的名稱 ',REPAIR_REBUILD)把' 需要修復(fù)的數(shù)據(jù)表的名稱更改為執(zhí)行DBCC CHECKD時報錯的數(shù)據(jù)表的名稱exec sp_dboption dbname,'single user','false'3. 其他的一些常用的修復(fù)命令

33、DBCC DBREINDEX重建指定數(shù)據(jù)庫中表的一個或多個索引用法:DBCC DBREINDEX(表名,'') 修復(fù)此表所有的索引。SQL SERVER數(shù)據(jù)庫的檢測及修復(fù)方法數(shù)據(jù)庫文件被頻繁地使用,由于某些原因,數(shù)據(jù) 庫有可能被損壞,本文將針對這種情況的數(shù)據(jù)庫檢測及修復(fù)方法做一簡單講解。1.1 SQLSERVER數(shù)據(jù)庫的檢測SQL SERVE提供了數(shù)據(jù)庫檢測的命令, 可用DBCC CHECKD對數(shù)據(jù)庫中各個對象的分配 及結(jié)構(gòu)的正確性進(jìn)行檢測, 并可通過一參數(shù)控制, 將所有的錯誤信息顯示出來。 其語法如下: DBCC CHECKDB('database_name'

34、 ,NOINDEX | REPAIR_ALLOW_DATA_LOSS| REPAIR_FAST |REPAIR_REBUILD )WITH ALL_ERRORMSGS | NO_INFOMSGS參數(shù)說明:'database_name'代表被檢測的數(shù)據(jù)庫實體名;NOINDEX指非系統(tǒng)表的非聚族索引不檢測;REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST| REPAIR_REB指直接修復(fù)發(fā)現(xiàn)的錯誤,其 中REPAIR_ALLOW_DATA_LOSS表,若此錯誤不能修復(fù)時,系統(tǒng)將直接刪除相關(guān)數(shù)據(jù)。帶此 三個參數(shù)的任一個時,數(shù)據(jù)庫必須處于單用戶模式,可在 Ent

35、erprise Manager 中的數(shù)據(jù)庫屬 性中設(shè)置; ALL_ERRORMSG代表將檢測到的錯誤信息全部顯示出來,否則,對于每張表最 多只顯示200條錯誤信息;NO_INFOMSGS代表隱藏所有的信息及占用空間的報告。經(jīng)過檢測,對于錯誤的對象,將以O(shè)BJECT ID勺形式報告具體出錯的信息,可根據(jù)OBJECTID到系統(tǒng)表sysobjects中查找到相關(guān)的表,即 NAME。1.2 SQL SERVE問題數(shù)據(jù)庫的修復(fù)經(jīng)過數(shù)據(jù)庫檢測后, 可針對出現(xiàn)的問題采取相應(yīng)的措施進(jìn)行處理。 如通過檢測后, 發(fā)現(xiàn) 對象的物理存放存在問題,可用DBCC CHECKALLC來進(jìn)行修復(fù):DBCC CHECKALLO

36、C('database_name' | REPAIR_REBUILD ) WITH ALL_ERRORMSGS| NO_INFOMSGS若是非系統(tǒng)對象的索引出錯,則可用DBCC DBREINDEX進(jìn)行修復(fù):DBCC DBREINDEX( 'database.owner.table_name' , index_name , fillfactor ) WITH NO_INFOMSGS 以上兩種情況也可直接使用DBCCCHECKDB( db_name',repair_rebuild) 來修復(fù)。另外一種情況是在進(jìn)行檢測時, 提示無法建立數(shù)據(jù)連接, 此時表明, 數(shù)

37、據(jù)庫已損壞。 對 于這種情況,我們可采取如下措施來嘗試修復(fù)。首先,在企業(yè)管理器中新建一數(shù)據(jù)庫(如數(shù)據(jù)庫名為test );建好數(shù)據(jù)庫后,停止SQL服務(wù)器,并將客戶數(shù)據(jù)庫的 MDF文件更名為test_data.mdf( 即新建數(shù)據(jù)庫的主文件名 ),然后用更名后的文件覆蓋新建數(shù)據(jù)庫同名文件,接著,啟動SQL服務(wù)器。對Master數(shù)據(jù)庫將系統(tǒng)表設(shè)置為可更改狀態(tài)Use Master Gosp_configure 'allow updates', 1 reconfigure with override Go 將數(shù)據(jù)庫設(shè)為緊急狀態(tài):update sysdatabases set status

38、 = 32768 where dbid=DB_ID('test')停止并重新啟動 SQL服務(wù)器,并重建 Log文件:DBCC TRACEON (3604)DBCC REBUILD_LOG(' test ','test _log_ldf')將數(shù)據(jù)庫設(shè)置為單用戶模式,然后進(jìn)行檢測:sp_dboption ' test ', 'single user', 'true'DBCC CHECKDB(' test ') Go此數(shù)據(jù)庫執(zhí)行CHECKDB的過程中發(fā)現(xiàn)一些表的索引被破壞,于是針對具體的表

39、進(jìn)行重建索弓I的操作:DBCC DBREINDEX表名)如執(zhí)行以上操作仍然不能解決, 若索引破壞的表是臨時表或不是關(guān)鍵表, 則可從新建賬 套中引入,若是主表,則可能通過近期的備份來(部份)恢復(fù)。若沒有一個備份,則無法修 復(fù)。1.3 SQL Server數(shù)據(jù)庫為什么易損壞呢?以下是微軟提供的一些可能引起數(shù)據(jù)庫損壞的原因及一些預(yù)防措施:操作問題,包括冷起動機(jī)器、熱拔硬盤、刪除一些數(shù)據(jù)庫文件; 硬件問題,包括磁盤控制器的問題; 操作系統(tǒng)問題,包括與系統(tǒng)相關(guān)的一些致命錯誤。1.4 預(yù)防措施:1、定期/不定期執(zhí)行CHKDSK不帶參數(shù)),以檢測硬盤物理結(jié)構(gòu)并修復(fù)一些CHKDSK報告的問題; 2、常備份數(shù)據(jù)

40、。1.5 應(yīng)用數(shù)據(jù)庫修復(fù)舉例declare databasename varchar(255)set databasename='AIS20021224170730' 一定要手工輸入 執(zhí)行一般性修復(fù)還存在問題時 ,進(jìn)行允許數(shù)據(jù)丟失的修復(fù) 許數(shù)據(jù)丟失的修復(fù)要求在單用戶下進(jìn)行,此時請退出中間層,客戶端,sql的其他模塊-所有功能退出 , 在查詢分析器 master 里設(shè)置數(shù)據(jù)庫為單用戶exec sp_dboption databasename, N'single', N'true'在查詢分析器 master 里 , 進(jìn)行修復(fù)數(shù)據(jù)庫dbcccheckd

41、b(databasename,REPAIR_ALLOW_DATA_LOSS)dbcccheckdb(databasename,REPAIR_REBUILD) 還- 原數(shù)據(jù)庫狀態(tài)exec sp_dboption databasename, N'single', N'false'第 2 章數(shù)據(jù)庫日志損壞的修復(fù)請遵照如下步驟來試圖重建數(shù)據(jù)庫事務(wù)日志 .注意 : 由于事務(wù)日志丟失 , 數(shù)據(jù)庫可能有沒有提交的數(shù)據(jù) . 注:都要替換成真實的數(shù)據(jù)庫名字-1 我們使用默認(rèn)方式建立一個供恢復(fù)使用的數(shù)據(jù)庫(如pos)??梢栽?SQL ServerEnterprise Manager 里面建立。 -2停掉數(shù)據(jù)庫服務(wù)器。-3將剛才生成的數(shù)據(jù)庫的日志文件pos_log.ldf 刪除,用要恢復(fù)的數(shù)據(jù)庫 mdf 文件覆蓋剛才生成的數(shù)據(jù)庫數(shù)據(jù)文件 pos_data.mdf 。 -4啟動數(shù)據(jù)庫服務(wù)器。此時會看到數(shù)據(jù)庫 pos 的狀態(tài)為“置疑” 。這時候不能對此數(shù)據(jù)庫進(jìn)行任何操作。-5設(shè)置數(shù)據(jù)庫允許直接操作系統(tǒng)表。此操作

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論