首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 錯誤 9003 解決方案:重建日誌檔案完整步驟

     編輯:關於SqlServer

錯誤現象

無法打開新數據庫 'POS'。CREATE DATABASE 中止。 (Microsoft SQL Server,錯誤: 9003)

錯誤 9003 通常表示交易日誌檔案(LDF)損壞或遺失,但資料檔案(MDF)完好。本文提供僅適用於 SQL Server 2000 的修復流程。

修復前提

  • 僅適用於 SQL Server 2000
  • MDF 檔案必須完整可讀
  • 操作前請備份原始 MDF/LDF 檔案

分步驟修復流程

步驟 1:建立同名空白資料庫

在 Enterprise Manager 中建立同名資料庫(如 POS),產生預設的 POS_Data.mdf 與 POS_Log.ldf。

步驟 2:停止 SQL Server 服務

net stop mssqlserver

步驟 3:替換資料檔案、刪除日誌檔案

  • 刪除新建資料庫的 POS_Log.ldf
  • 用待修復的 POS.mdf 覆蓋 POS_Data.mdf

步驟 4:啟動服務,資料庫進入「置疑」狀態

net start mssqlserver

此時資料庫標記為 Suspect(置疑),無法正常存取。

步驟 5:允許直接修改系統表

USE master;
GO
EXEC sp_configure 'allow updates', 1;
RECONFIGURE WITH OVERRIDE;
GO

步驟 6:設定資料庫為緊急修復模式

UPDATE sysdatabases SET status = -32768 WHERE dbid = DB_ID('POS');
GO

狀態變為:唯讀 / 置疑 / 離線 / 緊急模式,僅可見系統表。

步驟 7:重建日誌檔案(核心步驟)

DBCC REBUILD_LOG('POS', 'D:\Program Files\Microsoft SQL Server\MSSQL\Data\POS_Log.ldf');
GO

常見錯誤與處理

錯誤 5030:無法排他鎖定資料庫
原因:Enterprise Manager 開啟了系統表連線。
解決:關閉所有 EM 視窗、Query Analyzer 連線後重試。

成功提示:

警告: 資料庫 'POS' 的日誌已重建。已失去事務的一致性。應運行 DBCC CHECKDB 以驗證物理一致性。

步驟 8:驗證資料庫一致性(建議執行)

DBCC CHECKDB('POS');
GO
CHECKDB 發現了 0 個配置錯誤和 0 個一致性錯誤。

步驟 9:恢復資料庫正常模式

EXEC sp_dboption 'POS', 'dbo use only', 'false';
GO

步驟 10:關閉系統表直接修改選項(重要)

EXEC sp_configure 'allow updates', 0;
RECONFIGURE WITH OVERRIDE;
GO

關鍵提醒

  • 資料風險: 重建日誌會導致未提交交易遺失,資料庫處於「交易不一致」狀態
  • 事後檢查: 必須執行 DBCC CHECKDB 並檢查業務資料完整性
  • 備份策略: 修復後立即進行完整備份,建立可信任的恢復點

總結

錯誤 9003 在 SQL 2000 環境下可透過 DBCC REBUILD_LOG 修復,但屬於最後手段,操作前務必備份原始檔案。現代版本(2005+)建議使用 ATTACH_REBUILD_LOG 或從備份還原。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved