搜尋本站文章

2011-10-21

tempdb 資料庫所在的磁碟損毀。錯誤:1814,Could not create tempdb. 無法建立 tempdb

若是用來存放 tempdb 資料庫的磁碟空間,因故損毀或是無法再使用,將可能導致 SQL Server 無法正常啟動。

錯誤編號:1814
...
無法建立 tempdb。可能沒有足夠的可用磁碟空間。
請刪除 tempdb 磁碟機上的其他檔案以釋放更多的磁碟空間,然後重新啟動 SQL Server。
請檢查事件記錄檔中,可能指示為何無法初始化 tempdb 檔案的其他錯誤。
...
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.

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



請參考以下的錯誤訊息:

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

例如:C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG
...
2011-10-21 12:13:18.10 spid10s     Clearing tempdb database.
2011-10-21 12:13:18.11 spid10s     錯誤: 5123,嚴重性: 16,狀態: 1。
2011-10-21 12:13:18.11 spid10s     CREATE FILE encountered operating system error 3(系統找不到指定的路徑。) while attempting to open or create the physical file 'C:\myAdmin\myData\tempdb.mdf'.
2011-10-21 12:13:18.11 spid10s     錯誤: 17204,嚴重性: 16,狀態: 1。
2011-10-21 12:13:18.11 spid10s     FCB::Open failed: Could not open file C:\myAdmin\myData\tempdb.mdf for file number 1.  OS error: 3(系統找不到指定的路徑。).
2011-10-21 12:13:18.12 spid10s     錯誤: 5120,嚴重性: 16,狀態: 101。
2011-10-21 12:13:18.12 spid10s     無法開啟實體檔案 "C:\myAdmin\myData\tempdb.mdf"。作業系統錯誤 3: "3(系統找不到指定的路徑。)"。
2011-10-21 12:13:18.12 spid10s     錯誤: 1802,嚴重性: 16,狀態: 4。
2011-10-21 12:13:18.12 spid10s     CREATE DATABASE 失敗。某些列出的檔案名稱無法建立。請檢查相關的錯誤。
2011-10-21 12:13:18.12 spid10s     錯誤: 5123,嚴重性: 16,狀態: 1。
2011-10-21 12:13:18.12 spid10s     CREATE FILE 於嘗試開啟或建立實體檔案 'C:\myAdmin\myData\tempdb.mdf' 時,發現作業系統錯誤 3(系統找不到指定的路徑。)。
2011-10-21 12:13:18.12 spid10s     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.
2011-10-21 12:13:18.12 spid10s     SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.
...

--
Windows 應用程式記錄檔:

(1)
事件識別碼:5123
CREATE FILE 於嘗試開啟或建立實體檔案 'C:\myAdmin\myData\tempdb.mdf' 時,發現作業系統錯誤 3(系統找不到指定的路徑。)。

-- 02_事件識別碼:5123



(2)
事件識別碼:17204
FCB::Open failed: 無法開啟檔案 C:\myAdmin\myData\tempdb.mdf,檔案編號為 1。作業系統錯誤: 3(系統找不到指定的路徑。)。
'
-- 03_事件識別碼:17204



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

-- 04_事件識別碼:1814





可能的解決方案

示範環境:
SQL Server 2008 R2

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

請參考以下的範例程式碼:
--01 假設為預設執行個體,在「命令提示字元」視窗,執行:
NET START MSSQLSERVER /f /T3608
 
-- 若具名執行個體時
NET START MSSQL$執行個體名稱 /f /T3608
 
--02 在 sqlcmd 視窗,執行:
-- 檢視 tempdb 的存放路徑,在 sqlcmd 視窗,執行: 
USE master
GO
SELECT name N'邏輯檔案', physical_name N'實體檔案路徑'
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO

--03 設定 tempdb 檔案到新的硬碟位置
-- 例如:C:\myAdmin\Database
USE master; 
GO 
ALTER DATABASE tempdb 
 MODIFY FILE (NAME = tempdev, FILENAME = 'C:\myAdmin\Database\tempdb.mdf'); 
GO 
ALTER DATABASE tempdb 
 MODIFY FILE (NAME = templog, FILENAME = 'C:\myAdmin\Database\templog.ldf'); 
GO
 
--04 關閉 SQL Server,在「命令提示字元」視窗,執行:
NET STOP MSSQLSERVER
 
-- 若具名執行個體時
NET STOP MSSQL$執行個體名稱
 
--05 重新正常啟動 SQL Server,在「命令提示字元」視窗,執行:
NET START MSSQLSERVER
 
-- 若具名執行個體時
NET START MSSQL$執行個體名稱


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



也可以在 SSMS 管理工具內的「Database Engine 查詢」上執行。




啟動參數

描述
-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 停用啟動程序。




參考資料

移動系統資料庫
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

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

C2 稽核檔案的存放磁碟損毀。錯誤:19034,無法啟動 C2 稽核追蹤。正在關閉 SQL Server。錯誤 = 0x80070015(裝置未就緒。)
http://sharedderrick.blogspot.com/2011/10/c2-19034-c2-sql-server-0x80070015.html