症狀:
問題: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
沒有留言:
張貼留言