Bu makalede alwayson yapısında veritabanın log dosyasının yanlış bir path altına set edildiğinde neler yapılması gerektiğini görmüş olacağız.
Alwayson yapısında bulunan bir veritabanında ldf dosyalarını farklı dizinde olması ilerleyen aşamalarda veritabanının failover sunucu tekrar eski ortama veritabanı failover olduğunda failover işlemi gerçekleşmez veritabanımız yeni path üzerinde log dosyasını aradığı için farklı bir dizinde olması veritabanımızın açılmamasına sebep olacaktır. Buda veritabanımızın suspect durumuna düşmesine sebep olacaktır. Aşağıdaki komut ile primary ve secondary sunucusunda log dosyalarının olduğu pathler görülmektedir.
select name AS LogicalName,DB_NAME(database_id) DbName, physical_name from sys.master_files where type=1 and DB_NAME(database_id)='Test'
Primary Sunucusu:

Secondary Sunucusu:

SQL Server’da bir veritabanı dosyasının (LDF veya MDF) konumunu değiştirmek için izlemen gereken yol oldukça net. ALTER DATABASE komutuyla sistem kataloğunu güncelleyip, ardından fiziksel dosyayı taşıman gerekiyor.
Normalde Alwayson yapılı sistemlerde log dosyasının yolu farklı ise veritabanı alwayson yapısından çıkarılır. Tekrar backup restore komutuyla bağlanır.
Bu makalede görmemiz açısından nasıl yapıldığını ele alalım. Stand alone veritabanları için bu işlem rahatlıkla yapılabilir.
Öncelikle taşımak istediğin log dosyasının tam mantıksal adını (logical name) bilmen gerekir. Bu örneğimizde E:\LOG\Test_log.ldf olan path’imizi D:\VERI\Test_log.ldf olarak değiştirmiş olacağız.
Secondary sunucusunda aşağıdaki komut ile path değişimi yapılır.
ALTER DATABASE Test MODIFY FILE ( NAME = Test_log, FILENAME = 'D:\VERI\Test_log.ldf' );
Bu işlemi yapabilmek için veritabanının üzerinde hiç bir aktif session olmaması gerekmektedir. Veritabanının alwayson da olmasından dolayı hata mesajı alınmaktadır. Başka bir alternatifi bulunmamaktadır. Veritabanı OFFLINE moduna veya Single_User moduna alınmaz. AG altında çıkartırsak veritabanı Restoring moduna düşer ve üzerinden herhangi bir işlem yapılamaz.

Daha sonra sql server servisi secondary sunucusunda kapatılır. Çünkü veritabanı halen önceki disk üzerinden dönmektedir.

Sql server servisi stop edilir. Bu işlem secondary sunucusunda gerçekleşmektedir. Log dosyası belirtilen dizine taşınmaktadır.

Daha sonra servis tekrardan start edilir. Secondary sunucusunda veritabanımızın dizinlerine bakıldığında yeni değerin set edildiğini görmüş oluyoruz.
Stand alone veritabanlarında veritabanımızı offline ve online moda alma işlemini yapabiliriz.
ALTER DATABASE VeritabaniAdiniz SET OFFLINE WITH ROLLBACK IMMEDIATE;
--Online alma işlemi
ALTER DATABASE VeritabaniAdiniz SET ONLINE;
Bu makalede Alwayson yapısında veritabanının path’ini değiştirme işlemini görmüş olduk. Başka makalede görüşmek dileğiyle..
“…Sakın Dünya Hayatı Sizi Aldatmasın” Fatır-5
