激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Sql Server - SQLServer 數(shù)據(jù)修復(fù)命令DBCC一覽

SQLServer 數(shù)據(jù)修復(fù)命令DBCC一覽

2019-11-18 15:02mssql教程網(wǎng) Sql Server

MS Sql Server 提供了很多數(shù)據(jù)庫(kù)修復(fù)的命令,當(dāng)數(shù)據(jù)庫(kù)質(zhì)疑或是有的無(wú)法完成讀取時(shí)可以嘗試這些修復(fù)命令。

1. DBCC CHECKDB 
  重啟服務(wù)器后,在沒(méi)有進(jìn)行任何操作的情況下,在SQL查詢(xún)分析器中執(zhí)行以下SQL進(jìn)行數(shù)據(jù)庫(kù)的修復(fù),修復(fù)數(shù)據(jù)庫(kù)存在的一致性錯(cuò)誤與分配錯(cuò)誤。 
use master 
declare @databasename varchar(255) 
set @databasename='需要修復(fù)的數(shù)據(jù)庫(kù)實(shí)體的名稱(chēng)' 
exec sp_dboption @databasename, N'single', N'true' --將目標(biāo)數(shù)據(jù)庫(kù)置為單用戶(hù)狀態(tài) 
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 
dbcc checkdb(@databasename,REPAIR_REBUILD) 
exec sp_dboption @databasename, N'single', N'false'--將目標(biāo)數(shù)據(jù)庫(kù)置為多用戶(hù)狀態(tài) 
然后執(zhí)行 DBCC CHECKDB('需要修復(fù)的數(shù)據(jù)庫(kù)實(shí)體的名稱(chēng)') 檢查數(shù)據(jù)庫(kù)是否仍舊存在錯(cuò)誤。注意:修復(fù)后可能會(huì)造成部分?jǐn)?shù)據(jù)的丟失。 
2. DBCC CHECKTABLE 
如果DBCC CHECKDB 檢查仍舊存在錯(cuò)誤,可以使用DBCC CHECKTABLE來(lái)修復(fù)。 
use 需要修復(fù)的數(shù)據(jù)庫(kù)實(shí)體的名稱(chēng) 
declare @dbname varchar(255) 
set @dbname='需要修復(fù)的數(shù)據(jù)庫(kù)實(shí)體的名稱(chēng)' 
exec sp_dboption @dbname,'single user','true' 
dbcc checktable('需要修復(fù)的數(shù)據(jù)表的名稱(chēng)',REPAIR_ALLOW_DATA_LOSS) 
dbcc checktable('需要修復(fù)的數(shù)據(jù)表的名稱(chēng)',REPAIR_REBUILD) 
------把' 需要修復(fù)的數(shù)據(jù)表的名稱(chēng)'更改為執(zhí)行DBCC CHECKDB時(shí)報(bào)錯(cuò)的數(shù)據(jù)表的名稱(chēng) 
exec sp_dboption @dbname,'single user','false' 
3. 其他的一些常用的修復(fù)命令 
DBCC DBREINDEX 重建指定數(shù)據(jù)庫(kù)中表的一個(gè)或多個(gè)索引 
用法:DBCC DBREINDEX (表名,'') 修復(fù)此表所有的索引。 
=================================== 
SQL SERVER數(shù)據(jù)庫(kù)的檢測(cè)及修復(fù)方法 
隨著K/3產(chǎn)品的推廣,要求客戶(hù)服務(wù)人員對(duì)SQL SERVER數(shù)據(jù)庫(kù)的了解也進(jìn)一步提高。在K/3的使用過(guò)程中,數(shù)據(jù)庫(kù)文件被頻繁地使用,由于某些原因,數(shù)據(jù)庫(kù)有可能被損壞,本文將針對(duì)這種情況的數(shù)據(jù)庫(kù)檢測(cè)及修復(fù)方法做一簡(jiǎn)單講解。希望各位在實(shí)際工作過(guò)程中有新的發(fā)現(xiàn)時(shí),及時(shí)給我們提供信息,以便做進(jìn)一步的更新。 
1.1 SQL SERVER數(shù)據(jù)庫(kù)的檢測(cè) 
SQL SERVER提供了數(shù)據(jù)庫(kù)檢測(cè)的命令,可用DBCC CHECKDB對(duì)數(shù)據(jù)庫(kù)中各個(gè)對(duì)象的分配及結(jié)構(gòu)的正確性進(jìn)行檢測(cè),并可通過(guò)一參數(shù)控制,將所有的錯(cuò)誤信息顯示出來(lái)。其語(yǔ)法如下: 
DBCC CHECKDB 
('database_name' [,NOINDEX | { REPAIR_ALLOW_DATA_LOSS 
| REPAIR_FAST 
| REPAIR_REBUILD 
}] 
) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}] 
參數(shù)說(shuō)明: 
'database_name'代表被檢測(cè)的數(shù)據(jù)庫(kù)實(shí)體名; 
NOINDEX指非系統(tǒng)表的非聚族索引不檢測(cè); 
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST| REPAIR_REBUILD 指直接修復(fù)發(fā)現(xiàn)的錯(cuò)誤,其中REPAIR_ALLOW_DATA_LOSS代表,若此錯(cuò)誤不能修復(fù)時(shí),系統(tǒng)將直接刪除相關(guān)數(shù)據(jù)。帶此三個(gè)參數(shù)的任一個(gè)時(shí),數(shù)據(jù)庫(kù)必須處于單用戶(hù)模式,可在Enterprise Manager中的數(shù)據(jù)庫(kù)屬性中設(shè)置; 
ALL_ERRORMSGS代表將檢測(cè)到的錯(cuò)誤信息全部顯示出來(lái),否則,對(duì)于每張表最多只顯示200條錯(cuò)誤信息; 
NO_INFOMSGS代表隱藏所有的信息及占用空間的報(bào)告。 
經(jīng)過(guò)檢測(cè),對(duì)于錯(cuò)誤的對(duì)象,將以O(shè)BJECT ID的形式報(bào)告具體出錯(cuò)的信息,可根據(jù)OBJECT ID到系統(tǒng)表sysobjects中查找到相關(guān)的表,即NAME。 
1.2 SQL SERVER問(wèn)題數(shù)據(jù)庫(kù)的修復(fù) 
經(jīng)過(guò)數(shù)據(jù)庫(kù)檢測(cè)后,可針對(duì)出現(xiàn)的問(wèn)題采取相應(yīng)的措施進(jìn)行處理。如通過(guò)檢測(cè)后,發(fā)現(xiàn)對(duì)象的物理存放存在問(wèn)題,可用DBCC CHECKALLOC來(lái)進(jìn)行修復(fù): 
DBCC CHECKALLOC ('database_name' | REPAIR_REBUILD }] ) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}] 
若是非系統(tǒng)對(duì)象的索引出錯(cuò),則可用DBCC DBREINDEX進(jìn)行修復(fù): 
DBCC DBREINDEX ( [ 'database.owner.table_name' [, index_name [, fillfactor ] ] ] ) [WITH NO_INFOMSGS] 
以上兩種情況,也可直接使用DBCC CHECKDB(‘db_name',repair_rebuild)來(lái)修復(fù)。 
另外一種情況是在進(jìn)行檢測(cè)時(shí),提示無(wú)法建立數(shù)據(jù)連接,此時(shí)表明,數(shù)據(jù)庫(kù)已損壞。對(duì)于這種情況,我們可采取如下措施來(lái)嘗試修復(fù)。 
首先,在SQL Enterprise中新建一數(shù)據(jù)庫(kù)(如數(shù)據(jù)庫(kù)名為test),建好數(shù)據(jù)庫(kù)后,停止SQL Server Service Manager,并將客戶(hù)數(shù)據(jù)庫(kù)的MDF文件更名為test _data.mdf(即新建數(shù)據(jù)庫(kù)的主文件名),然后用更名后的文件覆蓋新建數(shù)據(jù)庫(kù)同名文件,接著,啟動(dòng)SQL Server Service Manager。對(duì)Master數(shù)據(jù)庫(kù)將系統(tǒng)表設(shè)置為可更改狀態(tài) 
Use Master 
Go 
sp_configure 'allow updates', 1 
reconfigure with override 
Go 
將數(shù)據(jù)庫(kù)設(shè)為緊急狀態(tài): 
update sysdatabases set status = 32768 where database ' 
停止并重新啟動(dòng)SQL Server Service Manager,并重建Log文件: 
DBCC TRACEON (3604) 
DBCC REBUILD_LOG(' test ','test _log_ldf') 
將數(shù)據(jù)庫(kù)設(shè)置為單用戶(hù)模式,然后進(jìn)行檢測(cè): 
sp_dboption ' test ', 'single user', 'true' 
DBCC CHECKDB(' test ') 
Go 
此數(shù)據(jù)庫(kù)執(zhí)行CHECKDB的過(guò)程中發(fā)現(xiàn)一些表的索引被破壞,于是針對(duì)具體的表進(jìn)行重建索引的操作: 
DBCC DBREINDEX(表名) 
如執(zhí)行以上操作仍然不能解決,若索引破壞的表是臨時(shí)表或不是關(guān)鍵表,則可從新建賬套中引入,若是主表,則可能通過(guò)近期的備份來(lái)(部份)恢復(fù)。若沒(méi)有一個(gè)備份,則無(wú)法修復(fù)。 
1.3 SQL Server數(shù)據(jù)庫(kù)為什么易損壞呢? 
以下是微軟提供的一些可能引起數(shù)據(jù)庫(kù)損壞的原因及一些預(yù)防措施: 
操作問(wèn)題,包括冷起動(dòng)機(jī)器、熱拔硬盤(pán)、刪除一些數(shù)據(jù)庫(kù)文件; 
硬件問(wèn)題,包括磁盤(pán)控制器的問(wèn)題; 
操作系統(tǒng)問(wèn)題,包括與系統(tǒng)相關(guān)的一些致命錯(cuò)誤。 
1.4 預(yù)防措施: 
1、定期/不定期執(zhí)行CHKDSK(不帶參數(shù)),以檢測(cè)硬盤(pán)物理結(jié)構(gòu)并修復(fù)一些CHKDSK報(bào)告的問(wèn)題; 
2、常備份數(shù)據(jù)。 
1.5 應(yīng)用數(shù)據(jù)庫(kù)修復(fù)舉例 
declare @databasename varchar(255) 
set @databasename='AIS20021224170730'------一定要手工輸入 
---------執(zhí)行一般性修復(fù)還存在問(wèn)題時(shí),進(jìn)行允許數(shù)據(jù)丟失的修復(fù) 
---------許數(shù)據(jù)丟失的修復(fù)要求在單用戶(hù)下進(jìn)行,此時(shí)請(qǐng)退出中間層,客戶(hù)端,sql的其他模塊 
---所有功能退出,在查詢(xún)分析器master里設(shè)置數(shù)據(jù)庫(kù)為單用戶(hù) 
exec sp_dboption @databasename, N'single', N'true' 
-----在查詢(xún)分析器master里,進(jìn)行修復(fù)數(shù)據(jù)庫(kù) 
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 
dbcc checkdb(@databasename,REPAIR_REBUILD) 
------還原數(shù)據(jù)庫(kù)狀態(tài) 
exec sp_dboption @databasename, N'single', N'false' 
第2章數(shù)據(jù)庫(kù)日志損壞的修復(fù) 
請(qǐng)遵照如下步驟來(lái)試圖重建數(shù)據(jù)庫(kù)事務(wù)日志. 
注意: 由于事務(wù)日志丟失, 數(shù)據(jù)庫(kù)可能有沒(méi)有提交的數(shù)據(jù). 
注:都要替換成真實(shí)的數(shù)據(jù)庫(kù)名字 
2.1 步驟1: 
創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),命名為原來(lái)數(shù)據(jù)庫(kù)的名字. 
2.2步驟2: 
停止SQL Server 
2.3步驟3: 
把老數(shù)據(jù)庫(kù)的MDF文件替換新數(shù)據(jù)庫(kù)的相應(yīng)的MDF文件, 并把LDF文件刪除 
2.4步驟4: 
重新啟動(dòng)SQL Server 服務(wù),然后運(yùn)行如下命令: 

復(fù)制代碼代碼如下:


Use Master 
Go 
sp_configure 'allow updates', 1 
reconfigure with override 
Go 
begin tran 
update sysdatabases set status = 32768 where db_name' 
-- Verify one row is updated before committing 
commit tran 


2.5步驟5: 
停止SQL然后重新啟動(dòng)SQL Server 服務(wù),然后運(yùn)行如下命令: 
DBCC TRACEON (3604) 
DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF') 
Go 
2.6步驟6: 
停止SQL然后重新啟動(dòng)SQL Server 服務(wù),然后運(yùn)行: 

復(fù)制代碼代碼如下:


use master 
update sysdatabases set status = 8 where 
Go 
sp_configure 'allow updates', 0 
reconfigure with override 
Go 


2.7步驟7: 
運(yùn)行dbcc checkdb(db_name)檢查數(shù)據(jù)庫(kù)的完整性. 
第3章 數(shù)據(jù)庫(kù)質(zhì)疑的一般處理 
1、執(zhí)行如下SQL(打開(kāi)修改系統(tǒng)表的開(kāi)關(guān)): 
EXEC sp_configure 'allow updates', 1 
RECONFIGURE WITH OVERRIDE 
2、修改數(shù)據(jù)庫(kù)Master中的表:sysdatabases 
將 status字段數(shù)值更改為4 
3、再執(zhí)行如下SQL: 
EXEC sp_configure 'allow updates', 0 
RECONFIGURE WITH OVERRIDE。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产视频在线观看免费 | 暴力肉体进入hdxxxx0 | aaaaaaa毛片| 亚洲第一成网站 | 亚洲视频在线免费看 | 一级片免费观看 | 看国产毛片 | 羞羞的视频 | 欧美精品激情视频 | 亚州精品在线视频 | 国产精品一区二区x88av | xxxx18韩国护士hd老师 | 久久99精品久久久久久久久久久久 | 国产精品成人免费一区久久羞羞 | www.91视频com | 亚洲成人黄色片 | 国产91精品亚洲精品日韩已满 | 5xsq在线视频 | 成年免费网站 | www.com香蕉 | 免费观看黄色片视频 | 国产69精品久久久久9999不卡免费 | 免费高清一级欧美片在线观看 | 国产精品视频一区二区三区综合 | 久久久久久久久久久综合 | 免费淫视频| 成人18在线 | 美女黄视频在线观看 | 久久人添人人爽人人爽人人片av | 免费观看一级黄色片 | 深夜激情视频 | 亚洲精品久久久久www | 久久久成人一区二区免费影院 | 播色网 | 精品无码一区在线观看 | 蜜桃网站免费 | 康妮卡特欧美精品一区 | 一级毛片真人免费播放视频 | 一级一级一级毛片 | 午夜爱爱福利 | 一区免费 |