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

BCP 工具還原 SQL Server 2000 資料庫實戰(一)

     編輯:關於SqlServer

BCP 還原 SQL Server 2000 資料庫實戰(一)

環境說明

  • Windows 2000 Server (簡體中文) + SP4
  • Microsoft SQL Server 2000 Enterprise (簡體中文) + SP3a

故障現象

  1. 游泳館收費系統無法連接 SQL Server 2000 資料庫
  2. 啟動 SQL Server 服務失敗
  3. 企業管理器啟動服務失敗(看不到資料庫樹狀目錄)

更糟的是技術員發現問題時已重新安裝過 SQL Server 2000,無法利用 master 資料庫修復;且只有 2004 年 6 月的備份檔,沒有 2005 年的備份。

嘗試 1:附加資料庫

複製資料檔 zytk.mdf 到 d:\recovery。企業管理器右鍵資料庫 → 所有工作 → 附加資料庫,選擇 d:\recovery\zytk.mdf,發現記錄檔錯誤(紅叉)。複製 zytk.ldf 到同目錄重試,仍錯誤。點擊確定提示記錄檔錯誤(錯誤 1813)。

附加資料庫錯誤

記錄檔路徑錯誤

錯誤 1813

嘗試 2:T-SQL 附加資料庫

USE master
GO
EXEC sp_attach_db "ZYTK", 
"D:\Microsoft SQL Server\MSSQL\Data\ZYTK.mdf",
"D:\Microsoft SQL Server\MSSQL\Data\ZYTK_log.ldf"

提示:裝置啟動錯誤,實體檔案名稱可能有誤。

嘗試 3:建立新資料庫替換檔案

  1. 將 D:\recovery\zytk.mdf 改名 zytk-old.mdf
  2. 企業管理器新建資料庫 zytk,指定資料/記錄檔路徑
  3. 停止 SQL Server 服務
  4. 將新建的 zytk.mdf 改名 zytk_data-new.mdf,將 zytk-old.mdf 改回 zytk_data.mdf
  5. 啟動 SQL Server 服務,資料庫 ZYTK 進入「置疑」狀態

進入緊急模式修復

USE master
GO
SELECT * FROM SysDatabases WHERE name='ZYTK'
-- 觀察 status = 1073741840
-- 目標:修改為 32768(緊急模式)再到 16(假正常模式)

預設不允許修改系統目錄,需先啟用:

sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE

修改狀態為緊急模式:

UPDATE SysDatabases SET status=32768 WHERE name='zytk'

執行 DBCC CHECKDB 檢查完整性,發現大量索引錯誤(如 B-tree 鏈結不匹配)。再修改狀態為 16(假正常模式),此時可看到資料表與資料,但不可重啟服務(否則回到置疑),也無法直接備份。

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