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);