DBCC CHECKDB SQL Server Veritabanı Bozulma sorununu giderme
摘要: DBCC CHECKDB, DBCC, Veritabanı onarımı, veritabanı, bozuk veritabanı
症狀
原因
解析度
DBCC, Microsoft SQL Server Veritabanlarını kontrol etmek ve onarmak için tasarlanmış yerel bir Microsoft SQL Server aracıdır. Bu makalede DBCC CHECKDB komutu ve veritabanı mantıksal ve fiziksel bütünlüğünü kontrol etme seçenekleri açıklanmaktadır.
DBCC CHECKDB (Transact-SQL):
DBCC CHECKDB'yi çalıştırma adımları:
- SQL Server Studio Management'ı açın
- Bir sorgu penceresi açın
- "DBCC CHECKDB (Veritabanı Adı)" yazın

DBCC Onarım Seçenekleri
- REPAIR_REBUILD: Aşağıdaki komut, veritabanını onarıma izin veren bir moda girer.
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
Aşağıdaki komutu kopyalayın ve doğru veritabanı adını kullanarak sorgu oturumuna yapıştırın:
--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: Aşağıdaki komut veritabanı onarımı gerçekleştirir ve onarım işleminin tamamlanması için veri kaybına neden olabilir.
--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
Aşağıdaki komutu kopyalayın ve doğru veritabanı adını kullanarak sorgu oturumuna yapıştırın:
Veritabanı fiziksel disk alanı azaldısa aşağıdaki komutlar kullanışlıdır.
--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
Aşağıdaki komutu kopyalayın ve doğru veritabanı adını kullanarak sorgu oturumuna yapıştırın:
--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
Aşağıdaki komutu kopyalayın ve sorgu oturumuna yapıştırın ve doğru veritabanı adını girin:
--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
