Merhabalar,
Uygulama geliştiricisi olarak bizler hemen hemen her gün veritabanları ile çalışıyoruz.
Bazen canlı, çalışan ve güncel verilerin olduğu önemli tablolarda Update, Delete işlemleri de yapmak zorunda kalıyoruz.
Deneyimli bir developer, veritabanında kritik Update,delete gibi komutları çalıştırmadan önce mutlaka bir veritabanı yedeği alır. Ki olası bir muhtemel aksilik durumunda yedekten geri dönebilsin.
Ancak bazen mevcut koşullar açısından veritabanı almak yedeği zor olabilir.
Özellikle çok büyük datalarla çalışırken, uzak bir lokasyonda bağlatı sorunu varken veya çok acil durumlar gibi nedenlerle risk alıp yedek alma işini atlayabiliyoruz.
Bu tarz durumlarda risk almamak adına ben kendi uyguladığım metodu sizlerle paylaşmak istiyorum ki bazen bu metod hayat kurtarır.
Örneğin :
TBL_MUHASEBE_FISLERI adında bir tablomuz olduğunu varsayalım.
Bildiğiniz gibi alttaki gibi bir kodla tablomuzda ki tüm verileri getiriyoruz
SELECT * FROM TBL_MUHASEBE_FISLERI
Biz bu koda ufak bir eklenti ile sadece bu tablonun hızlı bir şekilde yedeğini alacağız.
Tabloyu yedek almak için kullanacağımız kod şu;
SELECT * INTO TBL_MUHASEBE_FISLERI_20200402_1200 FROM TBL_MUHASEBE_FISLERI
evet bu kodla TBL_MUHASEBE_FISLERI tablomuzdaki tüm veriler TBL_MUHASEBE_FISLERI_20200402_1200 adında bir tablo otomatik olarak oluşturulup çok hızlı bir şekilde içerisine kopyalanır.
Tablo adından da anlaşılacağı üzere yedek aldığım tablonun hangi gün ve saate ait olduğunu da adına yazdım ki sonra baktığımda hatırlayayim.
Bu tablo yedeğini yine aynı aktif veritabanına aldık. Yani orjinal tablomuzla yeni yedek tablomuz şu an alt alta.
Ancak bazı durumlarda bu yedek tablomuzu başka veritabanına da almak isteyebiliriz.
Bu işlemi de şöyle gerçekleştiriyoruz.
SELECT * INTO BASKADB..TBL_MUHASEBE_FISLERI_20200402_1200 FROM TBL_MUHASEBE_FISLERI
Evet bu şekilde orjinal tablomuzu ve verilerini, aktif veritabanından çıkarıp BASKADB adlı veritabanımıza yedek olarak aktarıyoruz. Tabi bu yeni veritabanının (Örnekteki BASKADB) mevcut olması lazım, tablo gibi db otomatik oluşmaz 😃
Aklımıza şöyle bir soru gelebilir.
"Ooo çok iyiymiş tablomun bire bir aynısını yaptı ben bu tabloyu da kullanabilirim."
Teknik olarak hayır çünkü ;
Evet orjinal tablomuzdaki sütun ve veri tiplerine göre tablonun aynısını çıkarıp içerisine birde tüm verisini ekledi ama,
Primary key index , unique indexler, defaultlar, constraintler, triggerlar, identity özellikleri gibi diğer nesneler aktarılmadı oluşturulmadı.
Sadece tablomuzun ve verilerimizin kuru bir kopyası oluştu işe bu kadar.
.
.
Yaptığımız update işleminde muhtemel bir sorun yaşarsak veriyi bu yedek tablomuzdan geri alıp güncellememiz T-Sql deki FROM UPDATE kodu ile çok kolay olacaktır.
Not: Tablo yedek alma olarak adlandırdığım işlemi Ms Sql Veritabanında ben sıklıkla kullanıyorum.
Diğer veritabanı yönetim sistemlerinde de benzer bir şeklide uygulanabileceğini düşünüyorum ancak hiç denemedim.
Sizlerde, Verileniz de Güvenle Kalın.
Sağlıklı Huzurlu Çalışmalar;