DBCC CHECKDB 疑難解答 SQL 伺服器資料庫損毀

摘要: DBCC CHECKDB、DBCC、資料庫修復、資料庫、資料庫損毀

本文章適用於 本文章不適用於 本文無關於任何特定產品。 本文未識別所有產品版本。

症狀

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

原因

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

解析度

DBCC 是 Microsoft SQL Server 的原生工具,旨在檢查和修復 Microsoft SQL Server 資料庫。  本文探討 DBCC CHECKDB 命令和檢查資料庫邏輯和實體完整性的選項。

DBCC CHECKDB 資訊

DBCC CHECKDB (Transact-SQL):

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15此超連結會帶您前往 Dell Technologies 以外的網站。

執行 DBCC CHECKDB 的步驟:

  1. 開啟 SQL Server Studio 管理
  2. 開啟查詢視窗
  3. 「DBCC CHECKDB (資料庫名稱)」中輸入

執行 DBCC CHECKDB 的結果
 

        4.檢查查詢結果底部附近,查看分配和一致性錯誤。 
        5.  如果結果中出現分配和一致性錯誤,資料庫應從備份還原,或使用 DBCC CHECKDB 執行資料庫修復。          

DBCC 修復選項

  1. REPAIR_REBUILD:以下命令可讓資料庫處於可修復的模式。
USE Master;
GO
ALTER DATABASE TSQL2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB (TSQL2012, REPAIR_REBUILD)
GO
ALTER DATABASE TSQL2012
SET MULTI_USER;
GO

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

--Command below performs a Database repair not allowing Data loss

USE Master;
GO
ALTER DATABASE TSQL2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB (TSQL2012,REPAIR_REBUILD)
GO
ALTER DATABASE TSQL2012
SET MULTI_USER;
GO

       2.REPAIR_ALLOW_DATA_LOSS:以下命令可執行資料庫修復,並可能導致數據遺失,無法完成修復程式。

--Command below performs a database repair that may result in data loss,
 --replace TSQL2012 with the database name of database being repaired
USE Master
GO
ALTER DATABASE TSQL2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
GO
DBCC CHECKDB (TSQL2012, REPAIR_ALLOW_DATA_LOSS)
GO
ALTERDATABASE TSQL2012
SET MULTI_USER
GO

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

如果資料庫實體磁碟空間執行不足,以下命令會很有用。

--Command below estimates the size TEMPDB must be to complete the DBCC CHECKDB job
USE Master;
GO
ALTER DATABASE TSQL2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB (TSQL2012, REPAIR_REBUILD)
WITH ESTIMATEONLY;
GO
ALTER DATABASE TSQL2012
SET MULTI_USER
GO

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

--Command below estimates the size TEMPDB must be to complete the DBCC CHECKDB job

USE Master;
GO
ALTER DATABASE TSQL2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB (TSQL2012, REPAIR_REBUILD)
WITH ESTIMATEONLY;
GO
ALTER DATABASE TSQL2012
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 TSQL2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB (TSQL2012, REPAIR_REBUILD)
WITH TABLOCK;
GO
ALTER DATABASE TSQL2012
SET MULTI_USER
GO

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

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

USE Master;
GO
ALTER DATABASE TSQL2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB (TSQL2012, REPAIR_REBUILD)
WITH TABLOCK;
GO
ALTER DATABASE TSQL2012
SET MULTI_USER
GO

關於何時使用 DBCC CHECKDB 的資訊

受影響的產品

Dell Quickstart Data Warehouse Appliance, Prosupport for Microsoft Software
文章屬性
文章編號: 000134529
文章類型: Solution
上次修改時間: 18 3月 2025
版本:  5
向其他 Dell 使用者尋求您問題的答案
支援服務
檢查您的裝置是否在支援服務的涵蓋範圍內。