搜尋本站文章

2011-10-20

C2 稽核檔案的存放磁碟損毀。錯誤:19034,無法啟動 C2 稽核追蹤。正在關閉 SQL Server。錯誤 = 0x80070015(裝置未就緒。)

若是用來存放 C2 稽核模式其所產生的稽核記錄檔案之磁碟空間,因故損毀或是無法使用,將可能導致 SQL Server 無法正常啟動。

請參考以下的錯誤訊息:

--
SQL Server 錯誤記錄檔(ERRORLOG)

例如:C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG

...
2011-10-15 16:10:51.28 spid7s      錯誤: 19034,嚴重性: 21,狀態: 1。
2011-10-15 16:10:51.28 spid7s      Cannot start C2 audit trace. SQL Server is shutting down.  Error = 0x80070015(裝置未就緒。)
...

-- 01_命令提示列_啟動失敗_19034



--
Windows 應用程式記錄檔:

事件識別碼:19034
無法啟動 C2 稽核追蹤。正在關閉 SQL Server。錯誤 = 0x80070015(裝置未就緒。)

-- 02_事件檢視器_無法啟動C2稽核追蹤_19034






可能的解決方案

示範環境:
SQL Server 2008 R2

建議使用:
啟動參數:-f 與 追蹤旗標:T3608 來修復此問題。

請參考以下的範例程式碼:

--01 假設為預設執行個體,在「命令提示字元」視窗,執行:
NET START MSSQLSERVER /f /T3608

-- 若具名執行個體時
NET START MSSQL$執行個體名稱 /f /T3608

--02 在 sqlcmd 視窗,執行: 
-- 變更「資料庫預設位置」,例如:調整為:C:\myAdmin\DB
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'C:\myAdmin\DB'
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'C:\myAdmin\DB'
GO

--03 設定「停用」 C2 稽核追蹤
EXEC sys.sp_configure 'show advanced options', 1 ;
GO
RECONFIGURE ;
GO
EXEC sys.sp_configure N'c2 audit mode', N'0'
GO
RECONFIGURE WITH OVERRIDE
GO
EXIT

--04 關閉 SQL Server,在「命令提示字元」視窗,執行:
NET STOP MSSQLSERVER

-- 若具名執行個體時
NET STOP MSSQL$執行個體名稱

--05 重新正常啟動 SQL Server,在「命令提示字元」視窗,執行:
NET START MSSQLSERVER

-- 若具名執行個體時
NET START MSSQL$執行個體名稱

--03 03_修復,使用啟動參數:-f 與 追蹤旗標:T3608






啟動參數

描述
-f 啟動只含最小組態的 SQL Server 執行個體。如果組態值設定 (如過度調配記憶體) 造成伺服器無法啟動,這就很有用。

以最低組態模式啟動 SQL Server 會將 SQL Server 放在單一使用者模式下。
-m 當您以單一使用者模式啟動 SQL Server 執行個體。以單一使用者模式啟動 SQL Server 執行個體時,只有單一使用者可以進行連接,且不會啟動 CHECKPOINT 處理序。

CHECKPOINT 會保證將交易規律地從磁碟快取區寫到資料庫裝置。(一般而言,如果遇到一些應該修復系統資料庫的問題時,就會使用這個選項)。


啟用 sp_configure allow updates 選項。根據預設,allow updates 是停用的。在單一使用者模式下啟動 SQL Server 可讓電腦本機管理員群組的任何成員以 sysadmin 固定伺服器角色的成員身分,連接到 SQL Server 的執行個體。



追蹤旗標

描述
T3608 僅復原系統資料庫:master。
T4022 停用啟動程序。




情境:

原先已經變更 C2 稽核模式所產生的稽核記錄檔之存放路徑為:E:\myTrace\。

若僅是使用 /f 參數來啟動 SQL Server,仍是會遭遇 tempdb 建立失敗的錯誤。

請參考以下的錯誤訊息:

--
SQL Server 錯誤記錄檔(ERRORLOG)

...
錯誤: 5123,嚴重性: 16,狀態: 1。
CREATE FILE encountered operating system error 21(裝置未就緒。) while attempting to open or create the physical file 'E:\myTrace\tempdb.mdf'.
錯誤: 17204,嚴重性: 16,狀態: 1。
FCB::Open failed: Could not open file E:\myTrace\tempdb.mdf for file number 1.  OS error: 21(裝置未就緒。).
Could not create tempdb. You may not have enough disk space available. Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server. 
Check for additional errors in the event log that may indicate why the tempdb files could not be initialized.
...

--
事件檢視器--應用程式

事件識別碼:5123
CREATE FILE 於嘗試開啟或建立實體檔案 'E:\myTrace\tempdb.mdf' 時,發現作業系統錯誤 21(裝置未就緒。)。

事件識別碼:17204
FCB::Open failed: 無法開啟檔案 E:\myTrace\tempdb.mdf,檔案編號為 1。作業系統錯誤: 21(裝置未就緒。)。

事件識別碼:1814
無法建立 tempdb。您可能沒有足夠的可用磁碟空間。請刪除 tempdb 磁碟機上的其他檔案以釋放更多的磁碟空間,然後重新啟動 SQL Server。請檢查事件記錄檔中,可能顯示為何無法初始化 tempdb 檔案的其他錯誤。

-- 04_事件檢視器_tempdb錯誤_5123



-- 05_事件檢視器_tempdb錯誤_17204



-- 06_事件檢視器_tempdb錯誤_1814





參考資料

變更修改 C2 稽核模式所產生的稽核記錄檔之存放路徑
http://sharedderrick.blogspot.com/2009/12/c2.html

C2 稽核模式選項
http://technet.microsoft.com/zh-tw/library/ms187634.aspx

移動系統資料庫
http://msdn.microsoft.com/zh-tw/library/ms345408.aspx

使用 SQL Server 服務啟動選項
http://msdn.microsoft.com/zh-tw/library/ms190737.aspx

如何使用 SQL Server 中的卸離和附加功能將 SQL Server 資料庫移到新位置
http://support.microsoft.com/kb/224071/zh-tw

之後使用 WITH NORECOVERY 選項還原 model 資料庫中的 SQL Server 執行個體作業可能無法啟動成功
http://support.microsoft.com/kb/822852