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