<font id="vh7td"></font>

      <rp id="vh7td"></rp>

      <address id="vh7td"></address>
      <em id="vh7td"><i id="vh7td"></i></em>

          <mark id="vh7td"><noframes id="vh7td">
          <font id="vh7td"></font>
            新聞建站cms系統、政府cms系統定制開發

            廣州網站建設公司-閱速公司

            asp.net新聞發布系統、報紙數字報系統方案
            /
            http://www.goldexpectations.com/
            廣州網站建設公司
            您當前位置:首頁>網站技術

            網站技術

            科脈等超市系統數據庫損壞常規修復方法數據庫損壞常規處理方法-sql server數據庫修復

            發布時間:2024/5/4 10:05:28  作者:Admin  閱讀:17  

            廣告:阿里云采購優惠專區

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

            二、數據庫損壞常規修復方法
            溫馨提示:修復數據庫前,請做好數據備份,因為在修復數據庫過程中可能會造成數據丟失或者修復不了,如經過常規修復后還有問題,

            數據庫損壞常規修復方法可分別為:一致性錯誤修復和數據庫置疑修復,以下修復數據庫名稱都假設以kmjxc為準,(如庫名不是kmjxc請更改對應的庫名)

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

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

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

            修復步驟3:修復數據庫、數據庫索引
            使用以下語句進行數據庫修復,先執行修復數據庫,再執行修復數據庫索引,這兩個可交替重復執行。
            dbcc checkdb ('kmjxc',repair_allow_data_loss) -- 修復數據庫
            dbcc checkdb ('kmjxc',REPAIR_REBUILD) -- 修復數據庫索引
            修復步驟4:查詢錯誤ID的表名
            在修復數據庫的過程中,如果有出現個別錯誤是某個表損壞,會有提示表ID,可使用以下語句查詢這個ID是哪張表,再針對這張表進行修復。
            SELECT * FROM sysobjects where id = ‘此處填入表ID’ --查詢錯誤ID的表名
            修復步驟5:修復表、表索引
            使用以下語句進行數據庫修復,先執行修復表,再執行修復表索引,這兩個可交替重復執行。
            dbcc checktable ('此處填入表名',repair_allow_data_loss) -- 修復表
            dbcc checktable ('此處填入表名',REPAIR_REBUILD) -- 修復表索引
            修復步驟6:設置數據庫為多用戶
            修復完成后,需要將數據庫設置成多用戶模式
            EXEC sp_dboption 'kmjxc', 'single user', 'false'
            修復步驟7:發生鍵次錯誤,索引重復的處理方法
            以pos_t_saleflow_pre表為例在SQL查詢分析器的左側,找到pos_t_saleflow_pre表,展開,在約束中找到以PK開頭的主鍵約束,右鍵 – 在新窗口中編寫對象腳本為 – 創建,將創建出來的腳本保存作個備份,記住腳本中是以哪個字段為主鍵(以下語句中會使用到,因語句中以主鍵分組來查詢是否有重復),然后再右鍵刪除此主鍵約束,再使用以下語句查詢是否有重復值,如果有,則刪除。刪除重復值后,再用備份的腳本重新創建主鍵。
            --查詢是否存在重復的數據
            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

            --刪除表中重復的數據
            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

            四、小結
            此文檔闡述了數據庫損壞的概念、及數據庫常規的修復操作步驟。如按數據庫常規修復步驟無法修復,請聯系第三方專業修復公司。

            數據庫問題修復聯系電話:13631399978(微信同號)

            廣告:阿里云新人采購專場

            相關文章
            數據庫損壞
            數據庫修復
            cms新聞系統購買咨詢
            掃描關注 廣州閱速軟件科技有限公司
            掃描關注 廣州閱速科技
            青娱乐极品视觉盛宴国产视频_精品人妻少妇一区二区_禁断の肉体乱爱中文字幕_国产日本卡二卡三卡四卡

            <font id="vh7td"></font>

                <rp id="vh7td"></rp>

                <address id="vh7td"></address>
                <em id="vh7td"><i id="vh7td"></i></em>

                    <mark id="vh7td"><noframes id="vh7td">
                    <font id="vh7td"></font>