標籤

2021年1月27日 星期三

嘗試在資料庫5 中提取邏輯頁() 失敗。該邏輯頁屬於分配單元xxx而非xxx

症狀:
問題:MS SQL Server 資料庫損毀,需要修復才能維持穩定性和一致性。

原因:
MS SQL Server 資料庫、記錄和應用程式檔案的軟體損毀。

解法:
DBCC 是 Microsoft SQL Server 的原生工具,旨在檢查和修復 Microsoft SQL Server 資料庫。

詳見: https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

執行 DBCC CHECKDB 的步驟

開啟 SQL Server Management Studio
開啟 查詢視窗
輸入 DBCC CHECKDB [資料庫名稱] (如下圖)
檢查查詢結果底部附近,查看分配和一致性錯誤
如果結果中出現分配和一致性錯誤,資料庫應從備份還原,或使用 DBCC CHECKDB 執行資料庫修復。

使用 DBCC CHECKDB 執行資料庫修復 如下:

REPAIR_REBUILD:以下命令可讓資料庫處於可修復的模式。
複製以下命令,然後貼至輸入正確資料庫名稱的查詢工作階段:

USE Master;
GO

ALTER DATABASE 資料庫名稱
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (資料庫名稱,REPAIR_REBUILD)
GO

ALTER DATABASE 資料庫名稱
SET MULTI_USER;
Go

REPAIR_ALLOW_DATA_LOSS:以下命令可執行資料庫修復,並可能導致數據遺失,無法完成修復程式。
複製以下命令,然後貼至輸入正確資料庫名稱的查詢工作階段:

USE Master;
GO

ALTER DATABASE 資料庫名稱
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (資料庫名稱, REPAIR_ALLOW_DATA_LOSS)
GO

ALTER DATABASE 資料庫名稱
SET MULTI_USER;
Go

如果資料庫實體磁碟空間執行不足,以下命令會很有用。
複製以下命令,然後貼至輸入正確資料庫名稱的查詢工作階段:

USE Master;
GO

ALTER DATABASE 資料庫名稱
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (資料庫名稱, REPAIR_REBUILD)
WITH ESTIMATEONLY;
GO

ALTER DATABASE 資料庫名稱
SET MULTI_USER;
Go

複製以下命令,然後貼至輸入正確資料庫名稱的查詢工作階段:

--Command below will run DBCC CHECKDB without using TEMDB and creating a DB snapshot.
--When not using TEMPDB with a DB snapshot all data will be checked in the live database not not a database snapshot.

USE Master;
GO

ALTER DATABASE 資料庫名稱
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (資料庫名稱, REPAIR_REBUILD)
WITH TABLOCK;
GO

ALTER DATABASE 資料庫名稱
SET MULTI_USER;
Go

沒有留言:

使用 DiskSpd 測試磁碟效能

  DiskSpd 是微軟創建的命令行磁碟測試工具。它結合了強大的IO工作負載定義來測量磁碟效能。由於它支援自由配置和調整參數,使其成為存儲效能測試、驗證和基準測試的理想工具。 步驟 1. 從 GitHub (說明) https://github.com/Microsoft/di...