Merhaba arkadaşlar Delphi ve MS SQL de proje geliştiriyorum
iki tane ekranım olacak birisi backup birisi restore
backup ta bir buton olcak backup butununa bastığımda bir diyalog kutusu açılacak mdf dosyasını seçtiğimde istediğim yere bunu backup alabilmeliyim birde ziplenmiş haliyle kayıt edicem şöyle bir sorun var MS SQL servisleri çalışırken o dataları taşımam normalde olmuyor.Restorede de zip filesı seçerek herhangi bir tere o dataları geri yükleyebilmeliyim bu işlemleri nasıl yaparım
Backup ve Restore
genel bir backup yazilimi olacaksa calisan harici mdf dosyalarini nasil yedekleyebilirsiniz bunu bilemiyorum. Cunku MsSQL kullanmadım.
Fakat mevcut projenize bir backup modulu eklemek istiyorsanız bunun benzerini ben Sybase projelerimde yapiyorum.
Veritabanında belirli peryotlarda tetiklenen eventler ekleyerek (mesela her gun gece saat 3:00 de gibi...) o eventler isene yazidimiz
gibi bir kod ile belirledigimiz dizinlere veya disklere otomatik olarak yedek aldiriyoruz.
Ayrica de dediginz gibi kullanıcı o an yedek almak isterse de bu kodu o an calistirarak istenilen dizine yedek aliyoruz. Tabi bunlar dedigim gibi o an calisan database icin uygulanabilecek yontemler....
Fakat mevcut projenize bir backup modulu eklemek istiyorsanız bunun benzerini ben Sybase projelerimde yapiyorum.
Veritabanında belirli peryotlarda tetiklenen eventler ekleyerek (mesela her gun gece saat 3:00 de gibi...) o eventler isene yazidimiz
Kod: Tümünü seç
backup database directory 'c:\YEDEK\PERSEMBE\'
Ayrica de dediginz gibi kullanıcı o an yedek almak isterse de bu kodu o an calistirarak istenilen dizine yedek aliyoruz. Tabi bunlar dedigim gibi o an calisan database icin uygulanabilecek yontemler....
Bizim yedekleme yöntemimiz de (SQL Server kullanıyoruz). Bir job tanımlı. O job her gece belli bir saatte çalışıyor ve şu komutu çalıştırıyor:
Kod: Tümünü seç
BACKUP DATABASE [DATABASE_NAME] TO DISK = N'C:\YEDEK\DATABASE_NAME.BAK' WITH FORMAT, INIT
Bu komutlar database üzerinde calistigi icin sadece database'in yedegini alirlar. Siz yedek alama isini yaptirmak icin komutu calistirip yedegi aldiktan sonra bu dosyayi Delphi tarafinda sıkıstırma amaclı kullanacaginiz bir component ilse sıkıstırmalısınız.
Restore islemine gelince umarım hic ihtiyacınız olmaz. Ama bunun otomatik yapılması bence riskli. Cunku yine database üzerinden calistirabileceginiz bir restore komutu var ve bu komut ile o an calisan database'e bir yedegi restore etmek demek. Mevcut database'in ustune yedegi kopyalamak ile ayni etkiyi yapar. Yani mevcut verileriniz gider. Eger bir restore islemine ihtiyac var ise genelde eldeki databsae sorunludur acilmiyordur filan. Yani zaten restore komutunu calistirma ortamına giremiyorsunuzdur. Bu durumda yedegi el ile calismayanin yerine kopyalamanız ya da programa kopyalatmanız gerekiyor. Program icinden restore komutu calistirmanin sakincasi ise bir kullanıcı hatasi sonucu guncel database'in üstüne 1 ay onceki database'i restore edilmis bulma ihtimalidir
Restore islemine gelince umarım hic ihtiyacınız olmaz. Ama bunun otomatik yapılması bence riskli. Cunku yine database üzerinden calistirabileceginiz bir restore komutu var ve bu komut ile o an calisan database'e bir yedegi restore etmek demek. Mevcut database'in ustune yedegi kopyalamak ile ayni etkiyi yapar. Yani mevcut verileriniz gider. Eger bir restore islemine ihtiyac var ise genelde eldeki databsae sorunludur acilmiyordur filan. Yani zaten restore komutunu calistirma ortamına giremiyorsunuzdur. Bu durumda yedegi el ile calismayanin yerine kopyalamanız ya da programa kopyalatmanız gerekiyor. Program icinden restore komutu calistirmanin sakincasi ise bir kullanıcı hatasi sonucu guncel database'in üstüne 1 ay onceki database'i restore edilmis bulma ihtimalidir

Restore işlemini de yine job ile şu şekilde yapabilirsin
Kod: Tümünü seç
RESTORE DATABASE 'MODUL2003'
FROM DISK = '\\172.20.0.4\YEDEK\MODUL2003.BAK'
WITH
MOVE 'MODUL2003_DATA' TO 'C:\DATABASE\MODUL2003_DATA.MDF',
MOVE 'MODUL2003_LOG' TO 'C:\DATABASE\MODUL2003_LOG.LDF',
REPLACE
END