精細(xì)管理 · 敏捷經(jīng)營(yíng) · 快速應(yīng)用
規(guī)范流程 · 提升效益
規(guī)范管理 · 精細(xì)理財(cái)
用友軟件SQL數(shù)據(jù)庫置疑修復(fù)說明文檔
一, 數(shù)據(jù)庫置疑產(chǎn)生的原因
二, 數(shù)據(jù)庫置疑的預(yù)防
三, 數(shù)據(jù)庫置疑的修復(fù)
1、 SQL Server所在分區(qū)空間是否夠?數(shù)據(jù)庫文件大小是否達(dá)到最大文件限制?
FAT32的格式只支持四G以內(nèi)的文件
2、 數(shù)據(jù)庫文件損壞或被非正常刪除時(shí)出現(xiàn)這種情況
3、 病毒防火墻的掃描也會(huì)引起數(shù)據(jù)庫置疑
4、 當(dāng)SQL Server啟動(dòng)時(shí),將會(huì)嘗試獲得對(duì)數(shù)據(jù)庫文件的排他訪問權(quán),如果此時(shí)該文件被其他程序占用,或者遺失,數(shù)據(jù)庫將會(huì)被標(biāo)記為置疑。
5、 電腦非法關(guān)機(jī)也會(huì)造成數(shù)據(jù)庫置疑
6、 電腦磁盤有壞道有可能造成數(shù)據(jù)庫置疑
二,數(shù)據(jù)庫置疑的預(yù)防
1、 數(shù)據(jù)庫存放的盤符,空間是否夠大,經(jīng)常檢查盤符的空間
2、 數(shù)據(jù)庫存放的盤符的格式設(shè)置為NTFS格式
3、 進(jìn)行病毒清除時(shí),盡量把SQL服務(wù)停掉,再進(jìn)行檢查
4、 盡量減少非正常關(guān)機(jī)
5、 建議客戶購(gòu)買后備電源
6、 給客戶實(shí)施軟件之后一定要做好自動(dòng)備份
7、 建議客戶每隔一定時(shí)間手動(dòng)備份一次
三,數(shù)據(jù)庫置疑的修復(fù)
1, 點(diǎn)擊后臺(tái)登錄時(shí),如果提示如下圖片就有可能表示數(shù)據(jù)庫置疑了
2, 需要確認(rèn)檢查數(shù)據(jù)庫置疑,打開企業(yè)管理器中的數(shù)據(jù)庫目錄,如下圖顯示表示置疑
下面所有修復(fù)置疑的語法,在沒有特別提到時(shí),默認(rèn)數(shù)據(jù)庫都請(qǐng)選擇(Master)數(shù)據(jù)庫)
3, 修復(fù)置疑(必須在SQL的查詢分析器中才能進(jìn)行數(shù)據(jù)修復(fù)置疑工作)
A、 打開查詢分析器,當(dāng)數(shù)據(jù)置疑之后在查詢分析器中是看不到置疑的數(shù)據(jù)庫名稱的,所以進(jìn)入查詢分析器之后,所選數(shù)據(jù)庫默認(rèn)(Master)數(shù)據(jù)庫即可。(復(fù)制下面置疑語法到查詢分析器中執(zhí)行。
--修復(fù)數(shù)據(jù)庫置疑的語法
SP_configure 'allow update',1
go
RECONFIGURE WITH OVERRIDE
go
update sysdatabases
set status=-32768
where name='zmsoftpos_cs'--數(shù)據(jù)庫名稱
go
dbcc rebuild_log('zmsoftpos_cs','D:\zmsoftpos_cs_log')--重新建立日志
Go
update sysdatabases
set status=26
where name='zmsoftpos_cs'
Go
Sp_configure 'allow update',0
Go
Reconfigure with override
GO
備注:其中所有的“zmsoftpos_cs”是置疑的數(shù)據(jù)庫名稱,請(qǐng)根據(jù)客戶實(shí)際的置疑數(shù)據(jù)庫進(jìn)行更改名稱,其他的內(nèi)容不變
B、 拷入置疑語法之后,請(qǐng)按F5執(zhí)行,如果顯示框內(nèi)顯示的內(nèi)容如下表示置疑修復(fù)成功
C、 置疑修復(fù)成功之后,再到如上圖的master下拉框架內(nèi)就可以選擇所修復(fù)的置疑數(shù)據(jù)庫了,此時(shí)置疑是修復(fù)成功了,但是并不代表此數(shù)據(jù)庫就沒有問題了,請(qǐng)暫時(shí)不要進(jìn)軟件,我們還需要檢查數(shù)據(jù)庫有沒有問題。
4, 檢查修復(fù)置疑好的數(shù)據(jù)庫是否正常
A、 打開查詢分析器選中修復(fù)好的數(shù)據(jù)庫名稱,輸入“dbcc checkdb”語法,再按F5執(zhí)行,根據(jù)數(shù)據(jù)庫的大小執(zhí)行需要的時(shí)間不確定,請(qǐng)耐心等待,執(zhí)行完之后在顯示框內(nèi)就會(huì)顯示一些相關(guān)內(nèi)容如下圖:
如上圖所示,把顯示框拖到最下面,如果“CHECKDB 發(fā)現(xiàn)了 0 個(gè)分配錯(cuò)誤和 0 個(gè)一致性錯(cuò)誤”即表示此數(shù)據(jù)庫已經(jīng)好了,不用再修復(fù)了,客戶即可進(jìn)入軟件進(jìn)行操作了。
備注:(以下的語法就不用再執(zhí)行了)
B、 如果執(zhí)行“dbcc checkdb”后顯示框內(nèi)顯示了很多紅色的記錄,那么表示這個(gè)數(shù)據(jù)庫的有些表還有錯(cuò)誤需要修復(fù)
5, 修復(fù)過程如下:(修復(fù)過程中語法內(nèi)的數(shù)據(jù)庫名稱都根據(jù)客戶使用的數(shù)據(jù)庫進(jìn)行更改)
A、 首先退出所有的客戶端軟件與企業(yè)管理器,只打開查詢分析器,默認(rèn)數(shù)據(jù)庫“Master”,拷入如下語法執(zhí)行:
sp_dboption 'zmsoftpos_cs','single user','true'
備注:其中的數(shù)據(jù)庫名稱根據(jù)客戶使用的數(shù)據(jù)庫進(jìn)行更改。此語法是把數(shù)據(jù)庫設(shè)置為“單用戶模式”
B、 設(shè)置為單用戶模式之后,拷入如下語法進(jìn)行多次執(zhí)行
dbcc checkdb(zmsoftpos_cs,REPAIR_REBUILD)
備注:數(shù)據(jù)庫名稱根據(jù)客戶使用的數(shù)據(jù)庫進(jìn)行更改。此語法可以多次執(zhí)行,也需要多次執(zhí)行,每執(zhí)行完一次拖到顯示框內(nèi)的最后面如果“發(fā)現(xiàn)的是0個(gè)分配錯(cuò)誤與O個(gè)一致性錯(cuò)誤”就不用再修復(fù)了,只需執(zhí)行下面語法即可
Sp_dboption 'zmsoftpos_cs','single User', 'False'
備注:下面的語法也不需執(zhí)行了。
如果執(zhí)行多次之后:“CHECKDB 發(fā)現(xiàn)了 N個(gè)分配錯(cuò)誤和 N個(gè)一致性錯(cuò)誤”不會(huì)再次減少時(shí),表示此語法修復(fù)不成功,需要進(jìn)行下面的修復(fù)過程。
C、 再把下面語法拷進(jìn)入,進(jìn)行多次執(zhí)行:
dbcc checkdb ('zmsoftpos_cs',REPAIR_allow_data_loss)
備注:此語法的執(zhí)行與上面“ B ”點(diǎn)中執(zhí)行的語法過程一樣,執(zhí)行到此步驟百分之九十以上的數(shù)據(jù)庫都是可以修復(fù)的。如果執(zhí)行到最后分配錯(cuò)誤與一致性錯(cuò)誤還不減少,那么執(zhí)行下面的”D”操作
D、 拷入如下語法執(zhí)行:
exec sp_MSforeachtable 'dbcc dbreindex(''?'')'
備注:執(zhí)行此語法時(shí),此時(shí)的“ Master ”數(shù)據(jù)庫名稱一定要選擇修復(fù)的數(shù)據(jù)庫名稱,執(zhí)行才會(huì)生效。執(zhí)行完成之后,再使用“ dbcc checkdb ”語法再檢查一次,如果是“發(fā)現(xiàn)的是0個(gè)分配錯(cuò)誤與O個(gè)一致性錯(cuò)誤”表示修復(fù)成功,如果是:“CHECKDB 發(fā)現(xiàn)了 N個(gè)分配錯(cuò)誤和 N個(gè)一致性錯(cuò)誤”
表示此數(shù)據(jù)庫壞得很歷害,使用此方法已不能修復(fù)成功了。必面使用其他方法了。最后不管修復(fù)成不成功都要使用下面的語法結(jié)尾:
Sp_dboption 'zmsoftpos_cs','single User', 'False'
備注:把之前的單用戶模塊解除掉
6, 在上面的修復(fù)過程中不能解決的問題,再使用BCP命令語法進(jìn)行修復(fù)
例:以超市版本為例,超市版本的數(shù)據(jù)庫名稱為:zmsoftpos_cs
A、打開帳套管理新建一個(gè)相同的帳套,數(shù)據(jù)庫名稱就會(huì)是zmsoftpos_cs_01的帳套名稱,新建好之后,一定要使用后臺(tái)登錄進(jìn)去一次,再退出后臺(tái)。
B、打開查詢分析器,選擇好帳套數(shù)據(jù)庫“zmsoftpos_cs”把下面的語法拷進(jìn)入按F5執(zhí)行:
select 'if EXISTS(SELECT * FROM zmsoftpos_cs_01..sysobjects WHERE name = ' + char(39) + name + char(39) + ')'+char(13)+ 'delete from zmsoftpos_cs_01..'+name from zmsoftpos_cs..sysobjects where type='U'and name not in ('system_sheet_setup','system_mode_file','system_image') order by name
執(zhí)行完成之后在下面的顯示框架內(nèi)就會(huì)出現(xiàn)如下語法:
使用鼠標(biāo)左擊一下圖片中紅色圓圈內(nèi)的按鈕,就會(huì)選中下面的語法,然后再到紅色圓圈內(nèi)的按鈕上點(diǎn)鼠標(biāo)右鍵,點(diǎn)擊另存為,就會(huì)出現(xiàn)如下對(duì)話:
其中的保存類型一定要先選擇所有文件,然后再到文件名處,填寫好如圖片中輸入的名稱,然后點(diǎn)保存!
C、以上的語法另存為之后,再拷入以下的語法執(zhí)行:
select 'bcp zmsoftpos_cs..'+name+' out f:\data\'+name+'.txt -c -S127.0.0.1 -Usa_ -P422426362227001' from zmsoftpos_cs..sysobjects where xtype='U'
and name not in ('system_sheet_setup','system_mode_file','system_image') order by name
備注:以上的語法中有一個(gè)文件存放路徑,“f:\data\”此路徑根據(jù)實(shí)際的情況創(chuàng)建,然后更改過來,再執(zhí)行。執(zhí)行之后,按照上面的方法,點(diǎn)擊另存為如下圖:
其中的保存類型也要先選擇所有文件,然后再到文件名中填入如圖上的名稱:導(dǎo)出數(shù)據(jù).bat文件名,然后再點(diǎn)保存,保存的路徑一定要是上面語法中設(shè)置中文件夾的路徑。
D、此時(shí)再選擇超市版本的zmsoftpos_cs_01的帳套名稱,然后在左上角的文件中打開找到之前保存的“刪除數(shù)據(jù).sql”的文件,把其中的
”delete from”全部替換成“truncate table”,然后再按F5執(zhí)行。
E、把D點(diǎn)的語法執(zhí)行完成之后,還是選擇zmsoftpos_cs.01帳套再執(zhí)行以下的語法:
select 'bcp zmsoftpos_cs_01..'+name+' in f:\data\'+name+'.txt -c -S127.0.0.1 -Usa_ -P422426362227001'
from zmsoftpos_cs..sysobjects where xtype='U' and name not in ('system_sheet_setup','system_mode_file','system_image') order by name
其中的路徑f:\data\一定要與“ C ”點(diǎn)中的路徑一致。按F5執(zhí)行之后,按照C點(diǎn)的步驟,把顯示框內(nèi)的語法另存為“導(dǎo)入數(shù)據(jù).bat”的文件名,保存到語法的路徑文件夾內(nèi)。
F、以上的步驟操作完成之后,打開以上語法存放的徑路,先雙擊導(dǎo)出數(shù)據(jù)文件,雙擊之后就會(huì)出現(xiàn)如下對(duì)話框架:
此界面表示,正在從原帳套里面把數(shù)據(jù)導(dǎo)出來,請(qǐng)您靜心等待,導(dǎo)出完成之后此界面會(huì)自動(dòng)關(guān)閉的。
等待完成之后,再雙擊”導(dǎo)入數(shù)據(jù).bat”文件,也會(huì)出現(xiàn)如上的界面。也請(qǐng)您靜心等待,導(dǎo)出完成之后界面也會(huì)自動(dòng)關(guān)閉。
G、以上的步驟都完成之后,請(qǐng)把zmsoftpos_cs_01的帳套,備份一次,然后把zmsoftpos_cs與zmsoftpos_cs_01兩個(gè)帳套都刪掉,然后新建超市版本的帳套,把恢復(fù)備份的zmsoftpos_cs_01文件,此時(shí)您的數(shù)據(jù)庫修復(fù)的工作就大功告成了。。
如有其它不明白的問題,或需要我們解決的問題,請(qǐng)聯(lián)系我們!山東一友為用友集團(tuán)官方授權(quán)為山東地區(qū)指點(diǎn)服務(wù)中心,專業(yè)提供用友T3軟件報(bào)價(jià)、實(shí)施、上門安裝服務(wù),并為用友T3軟件客戶提供免費(fèi)培訓(xùn)等。服務(wù)電話:0531-82825553