Database’inize bir komut vermeye çalıştığınız da yada yönetmek istediğinizde suspect hatasını alıyorsanız gözlemlediğim kadarıyla aşağıda ki sorunlardan birisi olabilir.
1- Database birden fazla .mdf ve .log dosyasından oluşabilir.
2- Database’in alanı yetmediği için üstte ki şekilde parçalamış olabilir.
3- Database özelliklerinde belirtilen bu dosyalar doğru yollarda olmayabilir.
4- Database de aşırı şişme olabilir.
Bu durumlarda öncelikle .mdf ve .log dosyalarını yedekleyerek aşağıda ki adımlardan birisiyle sonuca gidebilirsiniz.
Yol 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
Yol2 :
DBCC CHECKDB (‘btaxidb’, REPAIR_ALLOW_DATA_LOSS)
DBCC CHECKDB (‘btaxidb’)
DBCC CHECKDB (‘btaxidb’, REPAIR_REBUILD)
Yol3:
USE master;
GO
EXEC sp_resetstatus’btaxidb’;
GO
USE btaxidb;
DBCC CHECKDB WITH NO_INFOMSGS;
GO
Yol4:
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
Üstteki kodları execute etmek çözüm olacaktır.
Not: Burada ki moutlar MSSQL Server 2005 de test edilmiştir. MSSQL 2000 ve 2008′e de uyumlu olabilir.
Dipnot: Herhangi bir yolu denedikden sonra mutlaka SQL server’ınızı restart ederek durumu kontrol ediniz. Ayrıca kodların sonunda boşluk olmaması gerekir. Özellikle dikkat edilmesi gerekir.