Sayfalar

30 Haziran 2010 Çarşamba

SQL Server 2005'te Bozulan Veritabanı ve Onarımı

SQL Sunucu SAS disk üzerindeki cluster'larda oluşmaya başlayan bozulmalardan ötürü aktif olarak kullandığımız veritabanının belirli tablo,index ve viewlarında bozulma olmuştu.Bozulan SAS diski yenisiyle değiştirmemize rağmen tabloya ulaşım sorunu çözülmedi.Bunun üzerine DBCC CHECK komutunu çalıştırarak onarım yapmak istedik.SQL Manegement Studio'yu açarak onarım yapılacak database'e erişim olmaması için aşağıdaki ekran ve komutta olduğu gibi Single User moduna geçirmeliyiz.

EXEC sp_dboption 'Database', 'single user', 'TRUE'





Database'i single user moduna geçirdikten sonra hangi bölümlerinde sorun olduğunu tespit etmek için
aşağıdaki komutu çalıştırmalıyız.


DBCC CHECKDB ('database adı')

komutu çalıştırdıktan sonra çıkan sonuçta aşağıdaki gibi 0 rakamını görüyorsak databasemizde bozulma olmamıştır.

CHECKDB found 0 allocation errors and 0 consistency errors in database 'TEST'.


DBCC execution completed. If DBCC printed error messages, contact your system administrator.
 
 
eğer 0 yerine farklı  rakamlar varsa aşağıdaki komutu çalıştırmalıyız.
 
 
DBCC CHECKDB ('TEST', REPAIR_REBUILD)
 
 
Bu işlem ile veritabanında onarım yaparken veri kaybı oluşmaz.İşlem sonucunda aşağıdaki sonuç çıkarsa onarım işlemi başarı ile tamamlanmıştır.Bu işlemin ardından Single User durumundaki veritabanını veritabanı özellliklerinden options bölümünden Multi User konumuna getirmeliyiz
 
 
CHECKDB found 0 allocation errors and 0 consistency errors in database 'TEST'.

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

29 Haziran 2010 Salı

SQL Sunucu'da Veritabanı Bozulmaları ve DBCC CHECHDB Komutu

SQL Sunucunun veritabanında fiziksel nedenlerle(disk bozulması ve bad sektör oluşması,elektrik kesilmesi) oluşan bozulmalarda aşağıdaki komutları kullanabiliriz.

SQL Server Sorgu Ekranında Master veritabanında aşağıdaki komut yazılacak;

DBCC CHECKDB ('DatabaseAdı')

yukarıdaki komut sadece database üzerindeki bozuklukları belirtir.Sorgu sonucunda 0 (sıfır) sonucunu görüyorsak database sağlamdır.Değişik rakamlar görüyorsak aşağıdaki komutu çalıştırmalıyız;

DBCC CHECKDB ('DatabaseAdı', REPAIR_REBUILD)


yukarıdaki komut veritabanını kayıp olmadan oanaracaktır.Eğer bu komutu çalıştırdığımız halde yine sonuş alamazsak aşağıdaki komut çalıştırılmalıdır bu komut veritabanında veri kaybına yolaçabilir;

DBCC CHECKDB ('DatabaseAdı', REPAIR_ALLOW_DATA_LOSS)