版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫被置疑后的解決方法數(shù)據(jù)庫被置疑后的解決方法 A我們使用默認(rèn)方式建立一個供恢復(fù)使用的數(shù)據(jù)庫(如test)??梢栽赟QL Server Enterprise Manager 里面建立。 B停掉數(shù)據(jù)庫服務(wù)器。 C將剛才生成的數(shù)據(jù)庫的日志文件test_log.ldf刪除,用要恢復(fù)的數(shù)據(jù)庫mdf文件覆蓋剛才生成的數(shù)據(jù) 庫數(shù)據(jù)文件test_data.mdf。 D啟動數(shù)據(jù)庫服務(wù)器。此時會看到數(shù)據(jù)庫test的狀態(tài)為"置疑"。這時候不能對此數(shù)據(jù)庫進(jìn)行任何*作。 E設(shè)置數(shù)據(jù)庫允許直接*作系統(tǒng)表。
2、此*作可以在SQL Server Enterprise Manager里面選擇數(shù)據(jù)庫服 務(wù)器,按右鍵,選擇"屬性",在"服務(wù)器設(shè)置"頁面中將"允許對系統(tǒng)目錄直接修改"一項選中。也可以 使用如下語句來實現(xiàn)。 use master go sp_configure 'allow updates',1 go reconfigure with override
3、60;go F設(shè)置test為緊急修復(fù)模式 update sysdatabases set status=-32768 where dbid=DB_ID('test') 此時可以在SQL Server Enterprise Manager里面看到該數(shù)據(jù)庫處于"只讀置疑脫機(jī)緊急模式"可以 看到數(shù)據(jù)庫里面的表,但是僅僅有系統(tǒng)表 G下面執(zhí)行真正的恢復(fù)*作,重建數(shù)據(jù)庫日志文件 dbcc rebuild_log('test','C:Prog
4、ram FilesMicrosoft SQL ServerMSSQLDatatest_log.ldf') 執(zhí)行過程中,如果遇到下列提示信息: 服務(wù)器: 消息 5030,級別 16,狀態(tài) 1,行 1 未能排它地鎖定數(shù)據(jù)庫以執(zhí)行該*作。 DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。 說明您的其他程序正在使用該數(shù)據(jù)庫,如果剛才您在F步驟中使用SQL Server Enterprise Manager 打開了te
5、st庫的系統(tǒng)表,那么退出SQL Server Enterprise Manager就可以了。 正確執(zhí)行完成的提示應(yīng)該類似于: 警告: 數(shù)據(jù)庫 'test' 的日志已重建。已失去事務(wù)的一致性。應(yīng)運(yùn)行 DBCC CHECKDB 以驗證物理一致 性。將必須重置數(shù)據(jù)庫選項,并且可能需要刪除多余的日志文件。 DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。 此時打開在SQL Server Ente
6、rprise Manager里面會看到數(shù)據(jù)庫的狀態(tài)為"只供DBO使用"。此時可以 訪問數(shù)據(jù)庫里面的用戶表了。 H驗證數(shù)據(jù)庫一致性(可省略) dbcc checkdb('test') 一般執(zhí)行結(jié)果如下: CHECKDB 發(fā)現(xiàn)了 0 個分配錯誤和 0 個一致性錯誤(在數(shù)據(jù)庫 'test' 中)。 DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。 &
7、#160; I設(shè)置數(shù)據(jù)庫為正常狀態(tài) sp_dboption 'test','dbo use only','false' 如果沒有出錯,那么恭喜,現(xiàn)在就可以正常的使用恢復(fù)后的數(shù)據(jù)庫啦。 J最后一步,我們要將步驟E中設(shè)置的"允許對系統(tǒng)目錄直接修改"一項恢復(fù)。因為平時直接*作系統(tǒng)表 是一件比較危險的事情。當(dāng)然,我們可以在SQL Server Enterprise Manager里面恢復(fù),也可以使用 如下語句完成
8、160;sp_configure 'allow updates',0 go reconfigure with override go -數(shù)據(jù)庫(如test) 分離后再附加 EXEC sp_detach_db 'test' EXEC sp_attach_db 'test','c:Program FilesMicrosoft SQL ServerMSSQLDatatest.mdf','
9、;c:Program FilesMicrosoft SQL ServerMSSQLDatatest_log.ldf'數(shù)據(jù)庫置疑的處理辦法 在MS SQLSERVER中一直有這樣的問題,SQLSERVER的狀態(tài)"置疑",我們先來分析一下SQLSERVER數(shù)據(jù)庫"置疑"的原因: 1.錯誤的刪除日志; 2.硬件(HD)損壞,造成日志和數(shù)據(jù)文件寫錯誤; 3.硬盤的空間不夠,比如日志文件過大; 解決辦
10、法: 這是最簡單的辦法是有數(shù)據(jù)庫的全備份,然后恢復(fù)即可. 步驟: 1. 刪除原始的數(shù)據(jù)庫: USE MASTER GO DROP DATABASE DB_SUEPECT 2.建立同名的數(shù)據(jù)庫: USE master GO CREATE DATABASE DB_SUSPECT
11、; GO 3.恢復(fù)數(shù)據(jù)庫: RESTORE DATABASE DB_SUSPECT FROM DBNAME_BACKUP.DAT 4.數(shù)據(jù)庫完整性檢測: DBCC CHECKDB('DB_SUSPECT') 5.重新啟動MSSQLSERVER服務(wù). 如果沒有全備份,那就要用一
12、些特殊的方法: 1.設(shè)置數(shù)據(jù)庫為緊急模式 Use Master GO sp_configure 'allow updates', 1 reconfigure with override GO UPDATE sysdatabases SET status = 32768 where name = 'DB_SUSPECT' GO
13、60;2.停掉SQL Server服務(wù): NET STOP MSSQLSERVER 3.把原始數(shù)據(jù)庫的數(shù)據(jù)文件DBNAME_DAT.MDF,DBNAME_LOG.LDF移走: 4.啟動SQL Server服務(wù): NET START MSSQLSERVER 5.重新建立一個同名的數(shù)據(jù)庫DB_SUSPECT; USE master GO
14、160;CREATE DATABASE DB_SUSPECT ON ( NAME = DBNAME_DAT, FILENAME = 'C:', SIZE = 10, FILEGROWTH = 5 ) LOG ON ( NAME = 'DBNAME_LOG', FILENAME = 'g:', SIZE = 5MB, FILEGRO
15、WTH = 5MB ) GO 6.設(shè)置數(shù)據(jù)庫運(yùn)行在單用戶的模式: USE MASTER GO ALTER DATABASE DB_SUSPECT SET SINGLE_USER GO 7.停掉SQL服務(wù): NET STOP MSSQLSERVER 8.把原來的數(shù)據(jù)文件再覆蓋回來: &
16、#160; 9.啟動SQL Server服務(wù): NET START MSSQLSERVER 10.重新設(shè)置SQLSERVER的狀態(tài): USE MASTER GO EXEC sp_resetstatus "DB_SUSPECT" 11.數(shù)據(jù)庫完整性檢測: DBCC CHECKDB('DB_SUSPECT')
17、; 12.恢復(fù)數(shù)據(jù)庫為多用戶模式: USE MASTER GO ALTER DATABASE DB_SUSPECT SET MULTI_USER GO 13.恢復(fù)SQLSERVER原始的配置: USE MATER GO UPDATE sysdatabases SET status = 4194320 where name = &
18、#39;DB_SUSPECT' GO 14.配置SQLSERVER不允許更新系統(tǒng)表: USE MASTER GO sp_configure 'allow updates', 0 reconfigure with override GO 15.重新啟動MSSQLSERVER服務(wù): 最好重新啟動操作系統(tǒng)
19、60; 16.備份數(shù)據(jù)庫: 可以通過SQLSERVER企業(yè)管理器或T-SQL.需要備份MASTER和DB_SUSPECT 補(bǔ)充一點(diǎn),如果用DOMAINUSER時,要注意對.MDF.LDF的所在目錄的權(quán)限. 如何修復(fù)SQLSERVER 數(shù)據(jù)庫置疑之(二) 如果 SQL Server 因為磁盤可用空間不足,而不能完成數(shù)據(jù)庫的恢復(fù),那么 SQL Server 2000 會返回錯誤 1105 并且將 sysdatabases 中的
20、 status 列設(shè)為置疑。 你可以看到在SQLSERVER 的ERROR LOG 和OS的應(yīng)用程序日志中應(yīng)該有1105的錯誤信息: SQL Server事務(wù)日志可能會被填滿,這會阻止之后的數(shù)據(jù)庫操作,包括UPDATE, DELETE, INSERT 和CHECKPOINT。 事務(wù)日志填滿會導(dǎo)致1105錯誤: Cant allocate space for object syslogs in database dbname because the logsegment is full。 If you ran ou
21、t of space in syslogs, dump the transaction log。 Otherwise use ALTER DATABASE or sp_extendsegment to increase the size of the segment。 這種現(xiàn)象可能出現(xiàn)于任何一個數(shù)據(jù)庫中,包括Master和TempDB。一些難以預(yù)見的因素可能消耗日志空間。 例如:一個大型事務(wù), 尤其像批量數(shù)據(jù)更新、插入或刪除。一個未提交的事務(wù)。檢查點(diǎn)處理程序截除時所需的帶寬過大。截除時超過閾值上述各種條件互相作用的結(jié)果。用于發(fā)布的標(biāo)
22、記事務(wù)沒有被日志讀取程序讀走 下面是修復(fù)的步驟和收縮日志的步驟: 1.在命令提示符下運(yùn)行以下命令啟動 SQL Server: SQLSERVER -f -m 備注:-m 開關(guān)以單用戶模式啟動 SQL Server。在單用戶模式下,只能成功建立一個連接。 請注意是否有任何其他客戶機(jī)或服務(wù)可能會在您通過 SQL Server 查詢分析器 建立連接前
23、使用那個連接。 2. 重置置疑數(shù)據(jù)庫的狀態(tài)。 sp_resetstatus 'database_name' 下面是結(jié)果集: Database'database_name'status reset! WARNING: You must reboot SQL Server prior to accessing this database! 3. 用 ALTE
24、R DATABASE 向數(shù)據(jù)庫添加一個數(shù)據(jù)文件或日志文件: USE master GO CREATE DATABASE db_name ON ( NAME = dbname_dat1, FILENAME = 'D:MSSQLDatadbname_dat1.ndf', SIZE = 1000MB, FIL
25、EGROWTH = 50MB ) GO -更改該數(shù)據(jù)庫以添加一個 2GB 大小的新數(shù)據(jù)文件 ALTER DATABASE db_name ADD FILE ( NAME = dbname_dat2, FILENAME = 'F:MSSQLDATAdbname_dat2.ndf', SIZE = 200
26、0MB, FILEGROWTH = 50MB ) GO -更改該數(shù)據(jù)庫以添加一個1GB 大小的新日志文件 ALTER DATABASE db_name ADD LOG FILE ( NAME = db_name_log2, FILENAME = 'F:MSSQLDatadb_name_log2.ldf',
27、160; SIZE = 1000MB, FILEGROWTH = 20MB), GO 4. 停止并重新啟動 SQL Server: 用新的數(shù)據(jù)文件或日志文件所提供的額外空間,SQL Server 應(yīng)該能完成數(shù)據(jù)庫的恢復(fù)。 5. 釋放磁盤空間并且重新運(yùn)行恢復(fù)操作,按照下面的步驟收縮日志。 sp_resetstatus 關(guān)閉數(shù)據(jù)庫的置疑標(biāo)志,但是原封不動地保持?jǐn)?shù)據(jù)庫的其它選項。 為從根本上解
28、決這樣的問題,你可以按下面的操作配置SQLSERVER 2000:a.如果不需要恢復(fù)到指定的時間點(diǎn),你可以將數(shù)據(jù)庫的恢復(fù)模式配置為簡單,這樣UPDATE,DELETE,SELECT就不會記錄日志,日志就不會增加的很大: USE MASTER GO ALTER DATABASE DB_NAME SET RECOVERY SIMPLEb.如果你的恢復(fù)模式是全部,你一定要配置日志字段收縮: USE MASTER &
29、#160; GO sp_dboption 'databasename','trunc. log on chkpt.',true sp_dboption 'databasename','autoshrink',truec.通過每日備份將日志收縮: BACKUP DATABASE DATABASE_NAME TO BACKUP_DEVICES BACKUP LOG DATABASE_NAME TO LOG_DEVICES &
30、#160;OR BACKUP LOG DATABASE_NAME with truncate_only *檢查日志的容量:DBCC SQLPERF (LOGSPACE) 這時日志并沒有收縮! d.每天在備份數(shù)據(jù)庫完成之后,重新啟動MS SQLSERVER SERVICE. USE DATABASE_NAME go DBCC SHRINKFILE(2,truncateonly)
31、*檢查日志的容量:DBCC SQLPERF (LOGSPACE) 這時日志已經(jīng)收縮! e.手動快速收縮日志: / *run below script,you will shrink you database log filesimmediately, in my experience,you need to run the script for 3
32、;or4 minutes before stopping it manually */use databasenamedbcc shrinkfile(2,notruncate)dbcc shrinkfile(2,truncateonly)create table t1(char1 char(4000)godeclare i intselect i=0while(1=1)begin while
33、(i<100) begin INSERT INTO T1 VALUES ('A') SELECT I=I+1 ENDTRUNCATE table T1BACKU
34、P LOG youdatabasename with truncate_onlyendGO 注意 只有在您的主要支持提供者指導(dǎo)下或有疑難解答建議的做法時,才可以使用 sp_resetstatus。否則,可能會損壞數(shù)據(jù)庫。 由于該過程修改了系統(tǒng)表,系統(tǒng)管理員必須在運(yùn)行 sp_resetstatus這個過程前,啟用系統(tǒng)表更新。要啟 用更新,使用下面的過程: USE master GO sp_configure 'allow updates', 1 GO RECONFIGURE WITH OVERRIDE GO 過程創(chuàng)建后,立即禁用系統(tǒng)表更新: sp_configure 'allow updates', 0 GO RECONFIGURE WITH OVERRIDE G
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年廚房通風(fēng)與排煙機(jī)器人行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年口腔數(shù)字化診斷軟件企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年壓力緩解片劑企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年塑木兒童游樂城堡行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年數(shù)據(jù)備份與恢復(fù)行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 出口托盤采購合同范例
- 撿球器行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 個人簽私人合同范本
- 2025-2030年中國欣健清開靈分散片項目投資可行性研究分析報告
- 2020-2025年中國維C銀翹片行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y戰(zhàn)略咨詢報告
- 《游戲界面設(shè)計專題實踐》課件-知識點(diǎn)5:圖標(biāo)繪制準(zhǔn)備與繪制步驟
- 自動扶梯安裝過程記錄
- 智慧供熱管理系統(tǒng)方案可行性研究報告
- 帕金森病的言語康復(fù)治療
- 中國城市居民的健康意識和生活方式調(diào)研分析報告
- 上海星巴克員工手冊
- 統(tǒng)編版小學(xué)語文五年級下冊第四單元解讀與大單元設(shè)計思路
- 貓狗創(chuàng)業(yè)計劃書
- 復(fù)產(chǎn)復(fù)工試題含答案
- 部編版語文三年級下冊第六單元大單元整體作業(yè)設(shè)計
- 售后服務(wù)經(jīng)理的競聘演講
評論
0/150
提交評論