SQL数据库置疑修复
生活随笔
收集整理的這篇文章主要介紹了
SQL数据库置疑修复
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SQL數據庫置疑修復
專業修復置疑sql數據庫方法
SQL 數據庫置疑修復說明文檔 一, 數據庫置疑產生的原因 二, 數據庫置疑的預防 三, 數據庫置疑的修復 一,數據庫置疑產生的原因 1, SQL Server 所在分區空間是否夠?數據庫文件大小是否達到最大文件限制? FAT32 的格式只支持四 G 以內的文件 2, 數據庫文件損壞或被非正常刪除時出現這種情況 3, 病毒防火墻的掃描也會引起數據庫置疑 置疑 4, 當 SQL Server 啟動時,將會嘗試獲得對數據庫文件的排他訪問權,如果此時該文 件被其他程序占用,或者遺失,數據庫將會被標記為置疑 置疑. 置疑 5, 電腦非法關機也會造成數據庫置疑 6, 電腦磁盤有壞道有可能造成數據庫置疑 二,數據庫置疑的預防 數據庫置疑的預防 1, 數據庫存放的盤符,空間是否夠大,經常檢查盤符的空間 2, 數據庫存放的盤符的格式設置為 NTFS 格式 3, 進行病毒清除時,盡量把 SQL 服務停掉,再進行檢查 4, 盡量減少非正常關機 5, 建議客戶購買后備電源 6, 給客戶實施軟件之后一定要做好自動備份 7, 建議客戶每隔一定時間手動備份一次 三,數據庫置疑的修復 1, 點擊后臺登錄時,如果提示如下圖片就有可能表示數據庫置疑了 2, 需要確認檢查數據庫置疑,打開企業管理器中的數據庫目錄,如下圖顯示 表示置疑 下面所有修復置疑的語法,在沒有特別提到時,默認數據庫都請選擇 (Master)數據庫) 3, 修復置疑(必須在 SQL 的查詢分析器中才能進行數據修復置疑工作) A, 打開查詢分析器, 當數據置疑之后在查詢分析器中是看不到置疑的數據 庫名稱的,所以進入查詢分析器之后,所選數據庫默認(Master)數據 庫即可. (復制下面置疑語法到查詢分析器中執行. --修復數據庫置疑的語法 SP_configure 'allow update',1 go RECONFIGURE WITH OVERRIDE go update sysdatabases set status=-32768 where name='zmsoftpos_cs'--數據庫名稱 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"是置疑的數據庫名稱,請根據客戶實 際的置疑數據庫進行更改名稱,其他的內容不變 B, 拷入置疑語法之后,請按 F5 執行,如果顯示框內顯示的內容如下表示 置疑修復成功 C, 置疑修復成功之后,再到如上圖的 master 下拉框架內就可以選擇所修 復的置疑數據庫了,此時置疑是修復成功了,但是并不代表此數據庫就 沒有問題了,請暫時不要進軟件,我們還需要檢查數據庫有沒有問題. 4, 檢查修復置疑好的數據庫是否正常 A, 打開查詢分析器選中修復好的數據庫名稱,輸入"dbcc checkdb"語法, 再按 F5 執行,根據數據庫的大小執行需要的時間不確定,請耐心等待, 執行完之后在顯示框內就會顯示一些相關內容如下圖: 如上圖所示,把顯示框拖到最下面,如果"CHECKDB 發現了 0 個分配錯誤 和 0 個一致性錯誤"即表示此數據庫已經好了,不用再修復了,客戶即可 進入軟件進行操作了. 備注: (以下的語法就不用再執行了) B, 如果執行"dbcc checkdb"后顯示框內顯示了很多紅色的記錄,那么表 示這個數據庫的有些表還有錯誤需要修復 5, 修復過程如下: 修復過程中語法內的數據庫名稱都根據客戶使用的數據庫 ( 進行更改) A, 首先退出所有的客戶端軟件與企業管理器,只打開查詢分析器,默認數 據庫"Master",拷入如下語法執行: sp_dboption 'zmsoftpos_cs','single user','true' 備注:其中的數據庫名稱根據客戶使用的數據庫進行更改.此語法是把數 據庫設置為"單用戶模式" B, 設置為單用戶模式之后,拷入如下語法進行多次執行 dbcc checkdb(zmsoftpos_cs,REPAIR_REBUILD) 備注:數據庫名稱根據客戶使用的數據庫進行更改.此語法可以多次執行, 也需要多次執行,每執行完一次拖到顯示框內的最后面如果"發現的是 0 個分配錯誤與 O 個一致性錯誤"就不用再修復了,只需執行下面語法即可 Sp_dboption 'zmsoftpos_cs','single User', 'False', 備注:下面的語法也不需執行了. 如果執行多次之后: "CHECKDB 發現了 N 個分配錯誤和 N 個一致性錯誤" 不會再次減少時,表示此語法修復不成功,需要進行下面的修復過程. C, 再把下面語法拷進入,進行多次執行: dbcc checkdb ('zmsoftpos_cs',REPAIR_allow_data_loss) 備注:此語法的執行與上面" B "點中執行的語法過程一樣,執行到此步 驟百分之九十以上的數據庫都是可以修復的.如果執行到最后分配錯誤與 一致性錯誤還不減少,那么執行下面的"D"操作 D, 拷入如下語法執行: exec sp_MSforeachtable 'dbcc dbreindex(''?'')' 備注:執行此語法時,此時的" Master "數據庫名稱一定要選擇修復的 數據庫名稱,執行才會生效.執行完成之后,再使用" dbcc checkdb " 語法再檢查一次,如果是"發現的是 0 個分配錯誤與 O 個一致性錯誤"表 示修復成功,如果是: "CHECKDB 發現了 N 個分配錯誤和 N 個一致性錯誤" 表示此數據庫壞得很歷害,使用此方法已不能修復成功了.必面使用其他 方法了.最后不管修復成不成功都要使用下面的語法結尾: Sp_dboption 'zmsoftpos_cs','single User', 'False' 備注:把之前的單用戶模塊解除掉 6, 在上面的修復過程中不能解決的問題,再使用 BCP 命令語法進行修復 例:以超市版本為例,超市版本的數據庫名稱為:zmsoftpos_cs A,打開帳套管理新建一個相同的帳套,數據庫名稱就會是 zmsoftpos_cs_01 的帳套名稱,新建好之后,一定要使用后臺登錄進去一 次,再退出后臺. B,打開查詢分析器,選擇好帳套數據庫"zmsoftpos_cs"把下面的語法拷 進入按 F5 執行: select 'if EXISTS(SELECT * FROM zmsoftpos_cs_01..sysobjects WHERE name = ' + char(39) + name + char(39) + zmsoftpos_cs_01..'+name type='U'and name 執行完成之后在下面的顯示框架內就會出現如下語法: from name ')'+char(13)+ 'delete from where in not zmsoftpos_cs..sysobjects ('system_sheet_setup','system_mode_file','system_image') order by 使用鼠標左擊一下圖片中紅色圓圈內的按鈕,就會選中下面的語法,然后 再到紅色圓圈內的按鈕上點鼠標右鍵,點擊另存為,就會出現如下對話: 其中的保存類型一定要先選擇所有文件,然后再到文件名處,填寫好如圖 片中輸入的名稱,然后點保存! C,以上的語法另存為之后,再拷入以下的語法執行: 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 備注:以上的語法中有一個文件存放路徑, "f:/data/"此路徑根據實際的 情況創建,然后更改過來,再執行.執行之后,按照上面的方法,點擊另 存為如下圖: name not in ('system_sheet_setup','system_mode_file','system_image') order by 其中的保存類型也要先選擇所有文件,然后再到文件名中填入如圖上的名 稱:導出數據.bat 文件名,然后再點保存,保存的路徑一定要是上面語法 中設置中文件夾的路徑. D, 此時再選擇超市版本的 zmsoftpos_cs_01 的帳套名稱, 然后在左上角的 文件中打開找到之前保存的"刪除數據.sql"的文件,把其中的 "delete from"全部替換成"truncate table" ,然后再按 F5 執行. E, D 點的語法執行完成之后, 把 還是選擇 zmsoftpos_cs.01 帳套再執行以 下的語法: 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 執行之后, 按照 C 點的步驟,把顯示框內的語法另存為"導入數據.bat"的文件名, 保存到語法的路徑文件夾內. F,以上的步驟操作完成之后,打開以上語法存放的徑路,先雙擊導出數據 文件,雙擊之后就會出現如下對話框架: 此界面表示,正在從原帳套里面把數據導出來,請您靜心等待,導出完成 之后此界面會自動關閉的. 等待完成之后,再雙擊"導入數據.bat"文件,也會出現如上的界面.也 請您靜心等待,導出完成之后界面也會自動關閉. G,以上的步驟都完成之后,請把 zmsoftpos_cs_01 的帳套,備份一次,然 后把 zmsoftpos_cs 與 zmsoftpos_cs_01 兩個帳套都刪掉, 然后新建超市版 本的帳套,把恢復備份的 zmsoftpos_cs_01 文件,此時您的數據庫修復的 工作就大功告成了. .總結
以上是生活随笔為你收集整理的SQL数据库置疑修复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开始blog
- 下一篇: SQL SERVER 数据库修复方法 (