SQL資料庫置疑修復

QL資料庫置疑修復說明文檔

一, 資料庫置疑產生的原因 二, 資料庫置疑的預防 三, 資料庫置疑的修復

說明文檔

一, 資料庫置疑產生的原因
二, 資料庫置疑的預防
三, 資料庫置疑的修復

一,資料庫置疑產生的原因

1、SQLServer所在分區空間是否夠?資料庫檔案大小是否達到最大檔案限制?
FAT32的格式只支持四G以內的檔案
2、 資料庫檔案損壞或被非正常刪除時出現這種情況
3、 病毒防火牆的掃描也會引起資料庫置疑
4、 當SQLServer啟動時,將會嘗試獲得對資料庫檔案的排他訪問權,如果此時該檔案被其他程式占用,或者遺失,資料庫將會被標記為置疑。
5、 電腦非法關機也會造成資料庫置疑
6、 電腦磁碟有壞道有可能造成資料庫置疑

二,資料庫置疑的預防

1、 資料庫存放的盤符,空間是否夠大,經常檢查盤符的空間
2、 資料庫存放的盤符的格式設定為NTFS格式
3、 進行病毒清除時,儘量把SQL服務停掉,再進行檢查
4、 儘量減少非正常關機
5、 建議客戶購買後備電源
6、 給客戶實施軟體之後一定要做好自動備份
7、 建議客戶每隔一定時間手動備份一次

三,資料庫置疑的修復

1, 點擊後台登錄時,如果提示如下圖片就有可能表示資料庫置疑了
2, 需要確認檢查資料庫置疑,打開企業管理器中的資料庫目錄,如下圖顯示表示置疑
下面所有修復置疑的語法,在沒有特別提到時,默認資料庫都請選擇(Master)資料庫)
3, 修復置疑(必須在SQL的查詢分析器中才能進行數據修復置疑工作)
A、 打開查詢分析器,當數據置疑之後在查詢分析器中是看不到置疑的資料庫名稱的,所以進入查詢分析器之後,所選資料庫默認(Master)資料庫即可。(複製下面置疑語法到查詢分析器中執行。

置疑的語法

SP_configure'allowupdate',1
go
RECONFIGUREWITHOVERRIDE
go
updatesysdatabases
setstatus=-32768
wherename="zmsoftpos_cs"--資料庫名稱
go
DBCCrebuild_log('zmsoftpos_cs','D:\zmsoftpos_cs_log')--重新建立日誌
Go
updatesysdatabases
setstatus=26
wherename="zmsoftpos_cs"
Go
Sp_configure'allowupdate',0
Go
Reconfigurewithoverride
GO
備註:其中所有的“zmsoftpos_cs”是置疑的資料庫名稱,請根據客戶實際的置疑資料庫進行更改名稱,其他的內容不變
B、 拷入置疑語法之後,請按F5執行,如果顯示框內顯示的內容如下表示置疑修復成功
C、 置疑修復成功之後,再到如上圖的master下拉框架內就可以選擇所修復的置疑資料庫了,此時置疑是修復成功了,但是並不代表此資料庫就沒有問題了,請暫時不要進軟體,我們還需要檢查資料庫有沒有問題。
4, 檢查修復置疑好的資料庫是否正常
A、 打開查詢分析器選中修復好的資料庫名稱,輸入“dbcccheckdb”語法,再按F5執行,根據資料庫的大小執行需要的時間不確定,請耐心等待,執行完之後在顯示框內就會顯示一些相關內容如下圖:
如上圖所示,把顯示框拖到最下面,如果“CHECKDB發現了0個分配錯誤和0個一致性錯誤”即表示此資料庫已經好了,不用再修復了,客戶即可進入軟體進行操作了。
備註:(以下的語法就不用再執行了)
B、 如果執行“dbcccheckdb”後顯示框內顯示了很多紅色的記錄,那么表示這個資料庫的有些表還有錯誤需要修復
5, 修復過程如下:(修復過程中語法內的資料庫名稱都根據客戶使用的資料庫進行更改)
A、 首先退出所有的客戶端軟體與企業管理器,只打開查詢分析器,默認資料庫“Master”,拷入如下語法執行:
sp_dboption'zmsoftpos_cs','singleuser','true'
備註:其中的資料庫名稱根據客戶使用的資料庫進行更改。此語法是把資料庫設定為“單用戶模式”
B、 設定為單用戶模式之後,拷入如下語法進行多次執行
dbcccheckdb(zmsoftpos_cs,REPAIR_REBUILD)
備註:資料庫名稱根據客戶使用的資料庫進行更改。此語法可以多次執行,也需要多次執行,每執行完一次拖到顯示框內的最後面如果“發現的是0個分配錯誤與O個一致性錯誤”就不用再修復了,只需執行下面語法即可
Sp_dboption'zmsoftpos_cs','singleUser','False',
備註:下面的語法也不需執行了。
如果執行多次之後:“CHECKDB發現了N個分配錯誤和N個一致性錯誤”不會再次減少時,表示此語法修復不成功,需要進行下面的修復過程。
C、 再把下面語法拷進入,進行多次執行:
dbcccheckdb('zmsoftpos_cs',REPAIR_allow_data_loss)
備註:此語法的執行與上面“B”點中執行的語法過程一樣,執行到此步驟百分之九十以上的資料庫都是可以修復的。如果執行到最後分配錯誤與一致性錯誤還不減少,那么執行下面的”D”操作
D、 拷入如下語法執行:
execsp_MSforeachtable'dbccdbreindex(''?'')'
備註:執行此語法時,此時的“Master”資料庫名稱一定要選擇修復的資料庫名稱,執行才會生效。執行完成之後,再使用“dbcccheckdb”語法再檢查一次,如果是“發現的是0個分配錯誤與O個一致性錯誤”表示修復成功,如果是:“CHECKDB發現了N個分配錯誤和N個一致性錯誤”
表示此資料庫壞得很歷害,使用此方法已不能修復成功了。必面使用其他方法了。最後不管修復成不成功都要使用下面的語法結尾:
Sp_dboption'zmsoftpos_cs','singleUser','False'
備註:把之前的單用戶模組解除掉
6, 在上面的修復過程中不能解決的問題,再使用BCP命令語法進行修復
例:以超市版本為例,超市版本的資料庫名稱為:zmsoftpos_cs
A、打開帳套管理新建一個相同的帳套,資料庫名稱就會是zmsoftpos_cs_01的帳套名稱,新建好之後,一定要使用後台登錄進去一次,再退出後台。
B、打開查詢分析器,選擇好帳套資料庫“zmsoftpos_cs”把下面的語法拷進入按F5執行:
select'ifEXISTS(SELECT*FROMzmsoftpos_cs_01..sysobjectsWHEREname="+char(39)+name+char(39)")'+char(13)+'deletefromzmsoftpos_cs_01..'+namefromzmsoftpos_cs..sysobjectswheretype="U"andnamenotin('system_sheet_setup','system_mode_file','system_image')orderbyname
執行完成之後在下面的顯示框架內就會出現如下語法:
使用滑鼠左擊一下圖片中紅色圓圈內的按鈕,就會選中下面的語法,然後再到紅色圓圈內的按鈕上點滑鼠右鍵,點擊另外儲存為,就會出現如下對話:
其中的保存類型一定要先選擇所有檔案,然後再到檔案名稱處,填寫好如圖片中輸入的名稱,然後點保存!
C、以上的語法另外儲存為之後,再拷入以下的語法執行:
select'bcpzmsoftpos_cs..'+name+'outf:\data\'+name+'.txt-c-S127.0.0.1-Usa_-P422426362227001'fromzmsoftpos_cs..sysobjectswherextype="U"
andnamenotin('system_sheet_setup','system_mode_file','system_image')orderbyname
備註:以上的語法中有一個檔案存放路徑,“f:\data\”此路徑根據實際的情況創建,然後更改過來,再執行。執行之後,按照上面的方法,點擊另外儲存為如下圖:
其中的保存類型也要先選擇所有檔案,然後再到檔案名稱中填入如圖上的名稱:導出數據.bat檔案名稱,然後再點保存,保存的路徑一定要是上面語法中設定中資料夾的路徑。
D、此時再選擇超市版本的zmsoftpos_cs_01的帳套名稱,然後在左上角的檔案中打開找到之前保存的“刪除數據.sql”的檔案,把其中的
”deletefrom”全部替換成“truncatetable”,然後再按F5執行。
E、把D點的語法執行完成之後,還是選擇zmsoftpos_cs.01帳套再執行以下的語法:
select'bcpzmsoftpos_cs_01..'+name+'inf:\data\'+name+'.txt-c-S127.0.0.1-Usa_-P422426362227001'
fromzmsoftpos_cs..sysobjectswherextype="U"andnamenotin('system_sheet_setup','system_mode_file','system_image')orderbyname
其中的路徑f:\data\一定要與“C”點中的路徑一致。按F5執行之後,按照C點的步驟,把顯示框內的語法另外儲存為“導入數據.bat”的檔案名稱,保存到語法的路徑資料夾內。
F、以上的步驟操作完成之後,打開以上語法存放的徑路,先雙擊導出數據檔案,雙擊之後就會出現如下對話框架:
此界面表示,正在從原帳套裡面把數據導出來,請您靜心等待,導出完成之後此界面會自動關閉的。
等待完成之後,再雙擊”導入數據.bat”檔案,也會出現如上的界面。也請您靜心等待,導出完成之後界面也會自動關閉。
G、以上的步驟都完成之後,請把zmsoftpos_cs_01的帳套,備份一次,然後把zmsoftpos_cs與zmsoftpos_cs_01兩個帳套都刪掉,然後新建超市版本的帳套,把恢復備份的zmsoftpos_cs_01檔案,此時您的資料庫修復的工作就大功告成了。。

相關詞條

相關搜尋

熱門詞條

聯絡我們