人妻无码中文字幕永久在线,99RE6这里有精品热视频,国产成人综合色就色综合 ,蜜臀av在线观看

新聞建站cms系統(tǒng)、政府cms系統(tǒng)定制開發(fā)

廣州網(wǎng)站建設(shè)公司-閱速公司

asp.net新聞發(fā)布系統(tǒng)、報(bào)紙數(shù)字報(bào)系統(tǒng)方案
/
http://www.jdki.com.cn/
廣州網(wǎng)站建設(shè)公司

sql數(shù)據(jù)庫(kù)修復(fù)

科脈等超市系統(tǒng)數(shù)據(jù)庫(kù)損壞常規(guī)修復(fù)方法數(shù)據(jù)庫(kù)損壞常規(guī)處理方法-sql server數(shù)據(jù)庫(kù)修復(fù)-刪除表中重復(fù)的數(shù)據(jù)

發(fā)布時(shí)間:2024/5/4 10:05:28  作者:Admin  閱讀:138  

廣告:

一、數(shù)據(jù)庫(kù)為什么會(huì)損壞
在了解數(shù)據(jù)庫(kù)損壞之前,首先我們要了解一下SQL Server是如何將數(shù)據(jù)保存到數(shù)據(jù)文件(MDF、NDF等),無(wú)論數(shù)據(jù)更新還是插入,數(shù)據(jù)都需要首先在內(nèi)存中Buffer Pool駐留,然后通過(guò)CheckPoint和Lazy writer等過(guò)程將內(nèi)存中的數(shù)據(jù)再持久化到磁盤,所以在這個(gè)過(guò)程中,會(huì)受到很多方面的影響,比如:電壓不穩(wěn)定、突然斷電、溫度過(guò)高或過(guò)低、潮濕程度、非法關(guān)機(jī)、硬盤壞道等都有可能會(huì)造成數(shù)據(jù)庫(kù)損壞。
通過(guò)上述,我們不難看出數(shù)據(jù)庫(kù)損壞是會(huì)受到很多方面影響,無(wú)法完全避免數(shù)據(jù)庫(kù)損壞,因此為了把數(shù)據(jù)庫(kù)損失降到最低,建議勤做數(shù)據(jù)備份。如果遇到數(shù)據(jù)庫(kù)損壞,我們應(yīng)當(dāng)如何處理?

二、數(shù)據(jù)庫(kù)損壞常規(guī)修復(fù)方法
溫馨提示:修復(fù)數(shù)據(jù)庫(kù)前,請(qǐng)做好數(shù)據(jù)備份,因?yàn)樵谛迯?fù)數(shù)據(jù)庫(kù)過(guò)程中可能會(huì)造成數(shù)據(jù)丟失或者修復(fù)不了,如經(jīng)過(guò)常規(guī)修復(fù)后還有問(wèn)題,

數(shù)據(jù)庫(kù)損壞常規(guī)修復(fù)方法可分別為:一致性錯(cuò)誤修復(fù)和數(shù)據(jù)庫(kù)置疑修復(fù),以下修復(fù)數(shù)據(jù)庫(kù)名稱都假設(shè)以kmjxc為準(zhǔn),(如庫(kù)名不是kmjxc請(qǐng)更改對(duì)應(yīng)的庫(kù)名)

2.1、SQL2000數(shù)據(jù)庫(kù)置疑修復(fù)必要條件
1.原庫(kù)的MDF數(shù)據(jù)文件必須是完好的
2.1.1、修復(fù)步驟1:前期準(zhǔn)備
停止SQL數(shù)據(jù)庫(kù)服務(wù),將置疑數(shù)據(jù)庫(kù)的MDF文件和LDF文件復(fù)制備份一份(復(fù)制到其他路徑);
啟動(dòng)SQL數(shù)據(jù)庫(kù)服務(wù),進(jìn)入SQL企業(yè)管理器,在左側(cè)數(shù)據(jù)庫(kù)里面找到置疑的庫(kù),右鍵刪除。
2.1.2、修復(fù)步驟2:倉(cāng)庫(kù)科脈空庫(kù)
使用御商安裝包DB_setup 文件夾中的db_setup.exe程序,創(chuàng)建一個(gè)空庫(kù),空庫(kù)的名稱與原庫(kù)一致;
將上一步中備份的置疑數(shù)據(jù)庫(kù)的MDF文件復(fù)制過(guò)來(lái)覆蓋現(xiàn)創(chuàng)建的空庫(kù)。
2.1.3、修復(fù)步驟3:把數(shù)據(jù)庫(kù)設(shè)置為緊急模式
打開SQL查詢分析器,選到master數(shù)據(jù)庫(kù),輸入以下語(yǔ)句執(zhí)行(一條一條執(zhí)行)
sp_configure 'allow',1
reconfigure with override
update sysdatabases set status=32768 where name = 'kmjxc'
2.1.4、修復(fù)步驟4:重建數(shù)據(jù)庫(kù)日志文件
D:\MSSQL$PROD\Data\ 為存放數(shù)據(jù)庫(kù)文件的路徑
KMJXC_log2.ldf 為一個(gè)新的不存在的文件,在執(zhí)行以下語(yǔ)句時(shí)將自動(dòng)建立
dbcc rebuild_log('kmjxc','D:\MSSQL$PROD\Data\KMJXC_log2.ldf')
2.1.5、修復(fù)步驟5:取消數(shù)據(jù)庫(kù)緊急模式
打開SQL查詢分析器,選到master數(shù)據(jù)庫(kù),輸入以下語(yǔ)句執(zhí)行(一條一條執(zhí)行)
update sysdatabases set status=0 where name = 'kmjxc'
restore database kmjxc with recovery
sp_configure 'allow',0
reconfigure with override
2.1.6、修復(fù)步驟6:重啟SQL服務(wù)
以上操作完成后,打開服務(wù)管理器(要在開始菜單中找到或右下角的狀態(tài)欄中找到),將SQL Server服務(wù)停止,再啟動(dòng)。到此,置疑修復(fù)完成,可到企業(yè)管理器中查看數(shù)據(jù)庫(kù)是否正常。

2.2、SQL2005\2008數(shù)據(jù)庫(kù)置疑修復(fù)
2.2.1、修復(fù)步驟1:設(shè)置數(shù)據(jù)庫(kù)為緊急模式
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go
alter database 置疑數(shù)據(jù)庫(kù)名 set emergency
go
2.2.2、 修復(fù)步驟2:設(shè)置單用戶模式
alter database置疑數(shù)據(jù)庫(kù)名set single_user
2.2.3、 修復(fù)步驟3:建數(shù)據(jù)庫(kù)日志文件
dbcc checkdb('置疑數(shù)據(jù)庫(kù)名',REPAIR_ALLOW_DATA_LOSS)
2.2.4、修復(fù)步驟4:取消單用戶模式
alter database置疑數(shù)據(jù)庫(kù)名set multi_user
2.2.5、修復(fù)步驟5:取消數(shù)據(jù)庫(kù)緊急模式
alter database 置疑數(shù)據(jù)庫(kù)名set online

三、 數(shù)據(jù)庫(kù)一致性錯(cuò)誤修復(fù)
修復(fù)數(shù)據(jù)庫(kù)名稱都假設(shè)以kmjxc為準(zhǔn),(如庫(kù)名不是kmjxc請(qǐng)更改對(duì)應(yīng)的庫(kù)名)
修復(fù)步驟1:檢測(cè)數(shù)據(jù)庫(kù)
打開SQL查詢分析器,選擇需要檢測(cè)的數(shù)據(jù)庫(kù),執(zhí)行dbcc checkdb語(yǔ)句可以檢測(cè)數(shù)據(jù)庫(kù)是否有分配性和一致性錯(cuò)誤
修復(fù)步驟2:設(shè)置數(shù)據(jù)庫(kù)為單用戶
如在檢測(cè)出有分配性和一致性錯(cuò)誤,證明數(shù)據(jù)庫(kù)已損壞,需要將數(shù)據(jù)庫(kù)設(shè)置為單用戶才能進(jìn)行數(shù)據(jù)庫(kù)的修復(fù),使用以下語(yǔ)句設(shè)置數(shù)據(jù)庫(kù)為單用戶
EXEC sp_dboption ' kmjxc ', 'single user', 'TRUE'

修復(fù)步驟3:修復(fù)數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)索引
使用以下語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)修復(fù),先執(zhí)行修復(fù)數(shù)據(jù)庫(kù),再執(zhí)行修復(fù)數(shù)據(jù)庫(kù)索引,這兩個(gè)可交替重復(fù)執(zhí)行。
dbcc checkdb ('kmjxc',repair_allow_data_loss) -- 修復(fù)數(shù)據(jù)庫(kù)
dbcc checkdb ('kmjxc',REPAIR_REBUILD) -- 修復(fù)數(shù)據(jù)庫(kù)索引
修復(fù)步驟4:查詢錯(cuò)誤ID的表名
在修復(fù)數(shù)據(jù)庫(kù)的過(guò)程中,如果有出現(xiàn)個(gè)別錯(cuò)誤是某個(gè)表?yè)p壞,會(huì)有提示表ID,可使用以下語(yǔ)句查詢這個(gè)ID是哪張表,再針對(duì)這張表進(jìn)行修復(fù)。
SELECT * FROM sysobjects where id = ‘此處填入表ID’ --查詢錯(cuò)誤ID的表名
修復(fù)步驟5:修復(fù)表、表索引
使用以下語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)修復(fù),先執(zhí)行修復(fù)表,再執(zhí)行修復(fù)表索引,這兩個(gè)可交替重復(fù)執(zhí)行。
dbcc checktable ('此處填入表名',repair_allow_data_loss) -- 修復(fù)表
dbcc checktable ('此處填入表名',REPAIR_REBUILD) -- 修復(fù)表索引
修復(fù)步驟6:設(shè)置數(shù)據(jù)庫(kù)為多用戶
修復(fù)完成后,需要將數(shù)據(jù)庫(kù)設(shè)置成多用戶模式
EXEC sp_dboption 'kmjxc', 'single user', 'false'
修復(fù)步驟7:發(fā)生鍵次錯(cuò)誤,索引重復(fù)的處理方法
以pos_t_saleflow_pre表為例在SQL查詢分析器的左側(cè),找到pos_t_saleflow_pre表,展開,在約束中找到以PK開頭的主鍵約束,右鍵 – 在新窗口中編寫對(duì)象腳本為 – 創(chuàng)建,將創(chuàng)建出來(lái)的腳本保存作個(gè)備份,記住腳本中是以哪個(gè)字段為主鍵(以下語(yǔ)句中會(huì)使用到,因語(yǔ)句中以主鍵分組來(lái)查詢是否有重復(fù)),然后再右鍵刪除此主鍵約束,再使用以下語(yǔ)句查詢是否有重復(fù)值,如果有,則刪除。刪除重復(fù)值后,再用備份的腳本重新創(chuàng)建主鍵。
--查詢是否存在重復(fù)的數(shù)據(jù)
dbcc checktable('pos_t_saleflow_pre')
select flow_no, flow_id
from pos_t_saleflow_pre
group by flow_no, flow_id
having count(1) > 1

--刪除表中重復(fù)的數(shù)據(jù)
while exists(select flow_no, flow_id
from pos_t_payflow_pre
group by flow_no, flow_id
having count(1) > 1)
begin
set rowcount 1
delete a
from pos_t_payflow_pre a
inner join (select flow_no, flow_id
from pos_t_payflow_pre
group by flow_no, flow_id
having count(1) > 1) b on a.flow_no = b.flow_no and a.flow_id = b.flow_id
set rowcount 0
end

四、小結(jié)
此文檔闡述了數(shù)據(jù)庫(kù)損壞的概念、及數(shù)據(jù)庫(kù)常規(guī)的修復(fù)操作步驟。如按數(shù)據(jù)庫(kù)常規(guī)修復(fù)步驟無(wú)法修復(fù),請(qǐng)聯(lián)系第三方專業(yè)修復(fù)公司。

數(shù)據(jù)庫(kù)問(wèn)題修復(fù)聯(lián)系電話:13631399978(微信同號(hào))

廣告:

相關(guān)文章
數(shù)據(jù)庫(kù)損壞
數(shù)據(jù)庫(kù)修復(fù)
cms新聞系統(tǒng)購(gòu)買咨詢
掃描關(guān)注 廣州閱速軟件科技有限公司
掃描關(guān)注 廣州閱速科技