18 Nisan 2018 Çarşamba

Microsoft SQL Server'da 3417 Hatasını Düzeltmek

Elektrik kesintisi, database migration, fiziksel sunucu taşınması vs. gibi bir çok sebepten kaynaklı olarak sorunsuz çalışan Microsoft SQL Server servisiniz 3417 hatası vererek artık çalışmaz duruma geldiyse bu kısa yazıya bir göz atmanızda fayda var.

Hizmetler'den SQL SERVER hizmetini başlatmak istediğinizde 3417 hatasını alıyorsanız sorunu giderip hizmeti başlatmak için birkaç farklı yöntem var. Tabi bunlar biraz da hatanın sebebiyle ilişkili sayılır:


  1. DATA klasorünüz veya *.mdf dosyanızın işletim sistemi özelliklerini kontrol edin. Eğer işletim sistemi tarafından sıkıştırılmış olarak çalışıyor ise bu özelliği işaretleyen çeki kaldırdıktan sonra Sql Server hizmetini başlatmayı tekrar deneyin.
  2. DATA klasörünüz ve/veya altındaki *.mdf uzantılı fiziksel veritabanı dosyalarınızın yetkileri bozulmuş olabilir. Klasör ve/veya dosyaların özelliklerinden Güvenlik sekmesine gelerek NETWORK SERVICE kullanıcısına tam erişim yetkisi verin. Gerekiyorsa bu klasör üzerindeki, farklı kullanıcı hesaplarının erişim kısıtlarını da kaldırın ve Sql Server hizmetini başlatmayı tekrar deneyin.
  3. En nadir görünen bu üçüncü ihtimal master.mdf dosyanızın bozulmuş olma ihtimali. Bunun da çözümü var. Klasör yapısı kullanılan veritabanı versiyonuna göre farklılık gösterse de çözüm yöntemi aynı şekilde olacaktır. Örneğimizdeki veritabanında şu klasörü buluyoruz: C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\Template Data bu klasör içindeki master.mdf ve mastlog.ldf dosyalarını alıp kendi DATA klasörümüze (ki o da örneğimize göre şurada olur: C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA ) kopyalıyoruz. (servisin çalışmadığını varsayarak, bu işlemden önce servisi kapatın demiyorum) Daha sonra Sql Server hizmetimizi başlatıyoruz. Sistemin çalışmaya başladığını göreceksiniz fakat içinde eski veritabanlarınızı göremeyeceksiniz. Onları da fiziksel *.mdf dosyalarını tek tek attach ederek çalışır hale getirebilirsiniz.
  4. DATA klasörünüzdeki fiziksel *.mdf dosyalarınızı yedekleyip Sql Server'ı uninstall edip akabinde tekrar kurduktan sonra yedeklediğiniz *.mdf dosyalarınızı yeni DATA klasörüne servisi durdurduktan sonra atıyoruz, servisi başlatıp hepsini tek tek attach ediyoruz.

SqlCmd -E -S SERVER -Q "BACKUP DATABASE [DbAdi] TO DISK='DbAdi.bak'"


Üstteki komut ile Windows'un komut satırından yedeklemenizi yapabilirsiniz.

Bunu Windows'un Zamanlanmış Görevleri'ne yeni bir görev olarak atayacak olursanız yedekleriniz otomatik olarak alınmış olur.

Ufak bir *.BAT dosya içine bu satırı yazarak elinizin altında her an tek tıklama ile yedek alabileceğiniz mini bir yedekleme yapısı da oluşturmanız mümkün.

Ancak 3417 hatasına karşın yeni bir DB eklediğinizde hizmeti kısa süreliğine (tabiki hastane vb. 24 saat çalışan bir ortamda değilse veritabanınız) durdurup master.mdf dosyanızı da fiziksel olarak yedekledikten sonra SqlServer hizmetini tekrar başlatmanız da ek bir önlem olacaktır.

Hatasız günler dilerim...

Hiç yorum yok:

Yorum Gönder