遺失的裝置造成資料庫被標記為可疑

文章翻譯 文章翻譯
文章編號: 180500 - 檢視此文章適用的產品。
本文曾發行於 CHT180500
全部展開 | 全部摺疊

徵狀

當 SQL Server 嘗試啟動資料庫的任何裝置檔案失敗時,就會將資料庫標記為可疑。您可能會在 SQL Server 錯誤記錄檔中看到下列其中一個訊息集:
錯誤訊息 1
96/11/18 10:48:32.60 kernel udopen:作業系統錯誤 32 (
處理程序無法存取檔案,因為檔案被其他處理程序使用中。
) 於建立/開啟實體裝置
C:\DATA\SQL\MSDB.DAT (或 C:\DATA\SQL\MSDB.MDF) 時發生。

96/11/18 10:48:32.60 kernel udactivate (主要):無法開啟
vdn 127 的裝置 C:\MSSQL\DATA\MSDB.DAT (或 C:\DATA\SQL\MSDB.MDF)
錯誤訊息 2
96/11/18 10:48:32.60 kernel udopen:作業系統錯誤 2(
系統找不到指定的檔案。) 於建立/開啟
實體裝置 C:\MSSQL\DATA\MSDB.DAT (或 C:\DATA\SQL\MSDB.MDF) 時發生。

96/11/18 10:48:32.60 kernel udactivate (主要):無法開啟為 vdn 127 開啟 C:\MSSQL\DATA\MSDB.DAT (或 C:\DATA\SQL\MSDB.MDF)
記錄檔稍後會出現下列訊息:
96/11/18 10:48:36.70 kernel udread:作業系統錯誤 6(
控制碼無效。) 於裝置 'C:\MSSQL\DATA\MSDB.DAT' (或 C:\DATA\SQL\MSDB.MDF) (virtpage
0x7f000018)。

96/11/18 10:48:36.77 spid11 錯誤: 840,重要性: 17,狀態: 2

96/11/18 10:48:36.77 spid11 Device 'MSDBData' (with physical name
'C:\MSSQL\DATA\MSDB.DAT' (or C:\DATA\SQL\MSDB.MDF), and virtual device number 127) is not
available.Please contact System Administrator for assistance. (96/11/18 10:48:36.77 spid11 裝置 'MSDBData' (含有實體名稱 'C:\MSSQL\DATA\MSDB.DAT' (或 C:\DATA\SQL\MSDB.MDF),以及虛擬裝置編號 127) 無法使用。請連絡系統管理員,尋求協助)

96/11/18 10:48:36.77 spid11 Buffer 1092480 from database 'msdb'
has page number 0 in the page header and page number 24 in the
buffer header (96/11/18 10:48:36.77 spid11 資料庫 'msdb' 中的緩衝區 1092480 在頁首中具有頁碼 0,以及緩衝區標題中具有頁碼 24)

96/11/18 10:48:37.43 spid11 Unable to proceed with the recovery of
dbid <5> because of previous errors.Continuing with the next
database. (96/11/18 10:48:37.43 spid11 由於先前發生錯誤,因此無法繼續復原 dbid <5>。請繼續下一個資料庫)
例如,執行下列步驟將會出現這個問題:
  1. 停止 SQL Server。
  2. 在 Mssql\Data 目錄下從命令提示字元發出下列命令:

    ren msdb.dat msdb.sav
  3. 啟動 SQL Server。
您將會在 SQL Server 錯誤記錄檔中看到上述錯誤 (第二組)。之後,如果您在 master 資料庫中發出下列查詢
   select name, dbid, mode, status from sysdatabases where dbid =
   db_id('msdb')
				

您會收到下列結果:
摺疊此表格展開此表格
namedbidmodestatus
msdb50328

328 狀態評估為:
truncate log on chkpt
database not recovered yet
database is suspect
				

如需詳細資訊,請參閱《SQL Server 線上叢書》中的<Sysdatabases (僅 Master 資料庫)>主題。

發生的原因

SQL Server 在啟動時會嘗試取得裝置檔案的獨占鎖定,如果裝置正在由其他處理序使用 (例如備份軟體),或者檔案遺失,就會遇到上述的情形。在這些情況中,裝置和資料庫通常都沒有問題。如果要使資料庫正確復原,裝置必須要能夠使用,且必須重設資料庫狀態。

其他可行方案

如果要暫時略過這個問題,請依照下列步驟執行。請注意,最後一個步驟最重要。
  1. 確定此裝置檔確實可以使用。
  2. 使用補充預存程序 sp_resetstatus 重設可疑資料庫的狀態。如果您尚未執行這項操作,請執行 Instsupl.sql 指令檔 (位於 Mssql\Install 目錄下) 建立程序。如需有關 sp_resetstatus 的詳細資訊,請參閱《SQL Server 線上叢書》中的<重設可疑狀態>(Resetting the Suspect Status) 主題。
  3. 在 master 資料庫中對可疑資料庫執行 sp_resetstatus:
          use master
          go
          exec sp_resetstatus msdb   -- replace msdb with your database name
     
    						
    您會看到下列輸出:
    Prior to Update sysdatabases attempt for DBName='msdb', the mode=0
    and status=328 (status suspect_bit=256).For DBName='msdb' in
    sysdatabases, status bit 256 was forced Off and mode was forced to
    0. WARNING:You MUST stop/restart SQL Server prior to accessing this
    database!
     
    					
  4. 停止並重新啟動 SQL Server。
  5. 確認資料庫已復原,並且可以使用。
  6. 執行 DBCC NEWALLOC、DBCC TEXTALL 及 DBCC CHECKDB。

其他相關資訊

如果執行這些步驟之後資料庫仍被標記為可疑,表示可能是其他問題造成資料庫無法復原。此時,您可以使用完好的備份進行還原,或者將資料庫設成緊急模式,並使用大量複製工具程式 (Bulk Copy Program,BCP) 將資料複製出來。 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
165918 INF:繞道 (緊急) 模式與 DUMP TRANSACTION WITH NO_LOG
重要 如果您要使用上述文件 (Q165918) 但不確定所執行動作可能造成的後果,請連絡主要的支援提供者以尋求協助。

屬性

文章編號: 180500 - 上次校閱: 2006年6月6日 - 版次: 5.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
關鍵字:?
kbprb KB180500
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com