“FCB::Open failed: Could not open file tempdb.mdf for file number.” Hatasının Çözümü

Bu makalede sql server servisinin tempdb yolunu bulamaması sonucu yapılması gereken işlemleri ele almış olacağız. Sql server system veritabanlarından biri olan  tempdb sql server servisi her restart edildiğinde sql server kurulumunda belirtilen dizinde tempdb system dosyaları tekrardan oluşmaktadır. Sql server önceden belirtilmiş olan tempdb disk yolunu göremezse aşağıdaki gibi bir hata mesajıyla karşılarız. Aşağıdaki hata mesajını Event Viewer Windows’un altındaki Application sekmesindeki aşağıdaki gözlemlemiş olduk.

Hata mesajında C diski altında belirtilen uzantının bulunmadığını söylüyor.

SSMS den giriş yaptığımızda aşağıdaki hata mesajını almış oluruz.

Sql  Server Configuration Manager ekranından sql server servisi kontrol edildiğinde servisin çalıştığını gözlemleriz.

Burada çözüm yolu olarak aklımıza ilk gelmesi gereken yapı Startup paramaters yapısıyla tempdb disk yollarını tekrardan modify etmede.

Yukarıdaki hata mesajında belirtilen disk uzantısı tekrardan Windows sunucusu üzerinde oluşturursak sql server tempdb veritabanımızı tekrardan oluşturmuş olacak.

Genel işleyişi anlamamız açısından kaldığımız yerden devam edelim. Şimdi belirlemiş olduğumuz yeni bir dosya yoluyla tempdb veritabanımızı tekrardan oluşturmuş olacağız. Bunun için system’in minumum parametreler ile çalışmasını sağlayan –f startup parametresini kullanmış olacağız. Startup parametreleriyle ilgili detaylı bilgi almak için sayfamızdaki makale okunabilir.

Gelen ekranda Cansel diyiyoruz.

Eğer yukarıda Cansel ifadesine tıklamazsak SSMS’i tekrardan açıp kapatmak gerekiyor. Yoksa hata mesajı alınmaktadır. New Query dedikten sonra bağlanıyoruz.

Gelen ekranda sunucu adımızı instance adımızı yazdıktan sonra Connect oluyoruz.

Başarılı bir şekilde bağlanmış olduk. Tempdb veritabanının data file’ları kaydedeceğimiz uzantıyı belirliyoruz.

Daha sonra tempdb system dosyasını modify ediyoruz. Ben 2 tane tempdb dosyası belirlemiş oldum. Birden fazla dosyamız varsa makalenin başındaki script’ten ulaşılabilir.

use master
go
alter database tempdb modify file (name = tempdev, filename = 'C:\D1\Tempdb\tempdb.mdf')
go

alter database tempdb modify file (name = templog, filename = 'C:\D1\Tempdb\templog.ldf')
Go

Yukarıdaki resimde de görüldüğü gibi tempdb dosyalarımız başarılı bir şekilde yüklenmiş olundu. Daha sonra ilgili instance’ın services bölümünde eklemiş olduğum –f parametresini silip servisimi Restart yapıyorum.

Daha sonra SSMS den instance’a bağlandıktan sonra belirlemiş olduğumuz dizin altında tempdb dosyalarının oluştuğunu görebiliriz.

Not: Dedicated Administrator Connection ile bu sorunu çözebilir miyim diye sorabilirsiniz. DAC (Dedicated Administrator Connection) üzerinden tempdb dosya yolunu değiştirebilirsiniz. Yani ALTER DATABASE tempdb MODIFY FILE komutlarını DAC bağlantısı üzerinden çalıştırmak teknik olarak mümkündür ve geçerlidir. DAC bağlantısı, genellikle normal bağlantıların kilitlendiği acil durumlarda kullanılır ama ALTER DATABASE gibi komutları çalıştırmanıza bir engel yoktur. DAC yapısı ile ilgili makaleyi okuyabilirsiniz.

Bu makalede sql server servisinin tempdb system dosyasını görememesinden dolayı bağlanamadığını görmüş olduk. Başka bir makalede görüşmek dileğiyle.

Onlar – ” Söz Verdiklerinde Sözünde Dururlar.” Bakara-177

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir