MssqlDatabase hataları bilindik üzere belki de en sık karşılaşılan ve içinden en çıkılmaz hata loglarından birisidir.Eğer database‘nizde bir komut verme sırasında veya yönetmek istediğiniz zamanlarda suspect hatasını ile karşılaşıyorsanız aşağıda verdiğimiz yöntemleri deneyerek sorunu çözebilirsiniz.

1- Database birden çok .mdf ve .log dosyasından oluşuyor olabilir.

2- Database’in alanı yetersiz geldiği için üstte ki şekilde parçala ihtimali vardır.

3- Database özelliklerinde belirtilen dosyalar yanlış konumlandırılmış ve database dosyaları bulamıyor olabilir.

4- Database de normalin dışında şişme olabilir.

Bu durumlarda ilk yapılması gereken .mdf ve .log dosyalarını yedek alarak aşağıda ki aşamalardan birisiyle sonuca gidebilirsiniz.

1)

EXEC SP_RESETSTATUS ‘DBADI’;
ALTER DATABASE DB SET EMERGENCY
DBCC CHECKDB(‘DBADI’)
ALTER DATABASE DB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CHECKDB (DB,REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE DB SET MULTI_USER

2)


DBCC CHECKDB (‘btaxidb’, REPAIR_ALLOW_DATA_LOSS)
DBCC CHECKDB (‘btaxidb’)
DBCC CHECKDB (‘btaxidb’, REPAIR_REBUILD)

3)
USE master;
GO

EXEC sp_resetstatus’btaxidb’;
GO

USE btaxidb;
DBCC CHECKDB WITH NO_INFOMSGS;
GO

4)

USE master;
GO

ALTER DATABASE btaxidb SET EMERGENCY
GO

ALTER DATABASE btaxidb SET SINGLE_USER
GO

DBCC CHECKDB(btaxidb, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;
GO

USE btaxidb;
DBCC CHECKDB WITH NO_INFOMSGS;
GO

Yukarıda verdiğimiz kodları execute etmek yeterli olacaktır.
Not: Burada verdiğimiz komutlar MSSQL Server 2005 aracılığı ile test edilmiştir. MSSQL 2000 ve 2008′e de uyumlu olabilir.

Dipnot: Her aşamayı denedikten sonra mutlaka database‘nize reset atarak durumu kontrol ediniz.Ayrıca özellikle dikkat etmeniz gereken diğer nokta ise kodların sonunda boşluk olmamasıdır.Eğer böyle bir hata yaparsanız denediğiniz yöntemler işe yaramayacaktır.

Yorum Gönderin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir