SQL Server 無法啟動的 4 種原因


SQL Server 無法啟動的原因定位、首先要知道SQL Server 啟動的過程。

 

第一步:

          讀取注冊表,創建log文件、檢測硬件、初始化系統配置。

第二步:

          啟動系統數據庫。

第三步:

          准備好網絡連接。

第四步:

          啟動用戶數據庫。

--------------------------------------------------------------------------------------------------------------------------------------------------------------

方法 1、 針對第一步

            運行--> regedit       打開注冊表

            Windows Server 2012 +SQL Server 2012 情況下SQL Server 的鍵值對在

            HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\.........下

            

           1、當前用戶沒有讀取注冊表權限時SQL Server 在第一步時就失敗了,所以不能啟動。

 

           運行 --> eventwvr          (event viewer)可以查看日志文件。

           

            單擊每一個信息可以查看它的全部內容。

            

           有了這個日志文件后有什么錯都可以從日志文件中找到答案了,是不是太爽了。

           然---

           2、如果日志文件不能被成功的創建SQL server也不可以被啟動。

方法 2、針對第二步

          啟動master 數據庫是一人重要階段,如果master數據庫不能正常啟動,數據庫也就不能啟動。

          1、在指定路徑下找不到master的文件、路徑不對。

          2、文件是找到了但是沒有權限、

          3、文件損壞了、

          你有沒有想過為什么我知道大概是這三個問題,我會告訴你這是經驗。但是你遇到了怎么辦,一個辦法,就是看日志,來定位錯誤的原因。

          解決方法

                      1、 恢復master 原來的備份。

                      2、取物相應的權限。

          啟動 Model 系統數據庫出錯時原因也與master 差不多吧。

          解決方法                     

                      1、 恢復master 原來的備份。

                      2、取物相應的權限。

                      3、在啟動數據庫時路過恢復Model這一個環節

                           第一步、用參數啟動SQL Server 

                                      net start MSSQLSERVER  /f /m /T3608

                           第二步、恢復Model 數據庫

                                      restore database Model from disk = 'E:\Model.bak';

         啟動 tempdb 出錯,服務器上可能沒有那么多空間放tempdb

         解決方法

                    第一步:用參數啟動

                               net start MSSQLSERVER /f /m /T3608

                    第二步:

                               alter database tempdb modify file(name =tempdev,size=100MB);

                               alter database tempdb modify file(name = templog,size=200MB);

方法 3、針對第三步

         網絡連接出錯,一般看來是端口被別的程序用了。

         解決方法:

                     SQL server 用的是1433端口、所以我們只要找到是哪個不臉的程序用了這個端口再把它kill了就可以了。

                     運行--> netstat

                      

 注意:

        SQL Server 在啟動完 master 后 tempdb 與准備網張連接是同時進行的。

方法 4、針對第四步

           數據庫文件有三種  1主數據庫文件 mdf、 2次要文件 ndf 、 3日志文件 ldf。

           不管是哪一個文件壞了數據庫都不會成常啟動。

           1、 完整還原數據庫  restore database........

           2、 如果只是個別ndf 壞了、可以用文件還原

                第一步:alter database Studio modify file(name = Studio2,offline);----把壞了的文件設為離線。

                第二步:alter database Studio set online;把數據庫設為在線。

                第三步:還原出壞的文件組。

          3、日志文件損壞了就有點不好了,慢慢聽

               在simple 恢復模式下如果上次數據庫是正常關閉(所有提交的事務都寫入硬盤,所有回滾的事務都以撤銷)的就算沒有ldf文件

               數據庫還是可以啟動的。

              如果ldf 文件損壞最好的恢復辦法就是恢復數據庫備份、因為有時數據庫可以處於一個不一致的狀態,如事務提交了,但是數據只在

              日志文件里,如果用戶可以接受這樣的損失,可以選擇dbcc checkdb 的方法修復數據庫

              首先:

                    1、 alter database Studio set Emerggency;

                    2、 alter database Studio set single_user;

                    3、 dbcc checkdb(Studio,repair_allow_data_loss);

 

 

 

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM