Delphi ile SQL Server 2000 Backup işlemi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Delphi ile SQL Server 2000 Backup işlemi
S.A.
Arkadaşlar benim sormak istediğim SQL üzerindeki databaseleri delphi tarafından Backup yapabilirmiyiz. Daha önce bir program görmüştüm hem backup hemde restore işlemi yapıyor. Ancak hangi dilde yazıldığını bilmiyorum.
Not : Enterprise Manager'den otomatik yedek alabiliyorum. Forumda aradım ama sadece bu yöntemi gösteriyor.
Düzeltme
EXEC sp_addumpdevice 'disk', 'sqlBackUP', 'c:\yedek.bak'
BACKUP DATABASE PERSONEL TO SQLBACKUP
komutu ile query analyser den backup almayı başardım. Delphide çalıştırdığım zaman
EXEC komutu için "Token not found" hatası alıyorum. Bu kodu delphi için nasıl uyarlayabiliriz.
ADOConnection, ADOTable ve SQLQuery bileşenlerini kullanıyorum.
Şimdiden teşekkür eder iyi çalışmalar dilerim.
Arkadaşlar benim sormak istediğim SQL üzerindeki databaseleri delphi tarafından Backup yapabilirmiyiz. Daha önce bir program görmüştüm hem backup hemde restore işlemi yapıyor. Ancak hangi dilde yazıldığını bilmiyorum.
Not : Enterprise Manager'den otomatik yedek alabiliyorum. Forumda aradım ama sadece bu yöntemi gösteriyor.
Düzeltme
EXEC sp_addumpdevice 'disk', 'sqlBackUP', 'c:\yedek.bak'
BACKUP DATABASE PERSONEL TO SQLBACKUP
komutu ile query analyser den backup almayı başardım. Delphide çalıştırdığım zaman
EXEC komutu için "Token not found" hatası alıyorum. Bu kodu delphi için nasıl uyarlayabiliriz.
ADOConnection, ADOTable ve SQLQuery bileşenlerini kullanıyorum.
Şimdiden teşekkür eder iyi çalışmalar dilerim.
Bildiğim tek şey, hiç bir şey bilmediğim.
bende bu konuda yazılmış bişşiler vardı... kod arşivine bakarım. delphide yazılmış.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Delphiden yazdığım yedekleme ve geri getirme özellikli programımda ben farklı şekilde çalışıyorum. ADOConnection nesnesinin Execute metodu ile sql çalıştırıyorum ve direk dosya ismini veriyorum.
Yedeklerken:
Yedek getirirken:
Bu kodlar MasterConn TADOConnection bileşenim master veritabanına bağlı iken çalışıyor.
Yedeklerken:
Kod: Tümünü seç
MasterConn.Execute(Format('BACKUP DATABASE [%s] TO DISK = ''%s''',[DBAdi,DosyaAdi]));
Kod: Tümünü seç
MasterConn.Execute(Format('RESTORE DATABASE [%s] FROM DISK = ''%s%s''',[DBAdi,YolTamamla(KlasorAdi),DosyaAdi]));
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Peki diyelim ki kullanıcı DENEME datasını C:\program kalasörü içerisinden backup aldı, Restore ederken otomatik olarak yine C:\program klasörü içerisine restore ediyor. Ben restore işlemini D:\Program klasörüne yapmasını istersem kodda nasıl bir düzenleme yapmam gerekiyor.
Bildiğim tek şey, hiç bir şey bilmediğim.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Yukarıdaki kodlarıma göre, ile aldığımız yedeği başka klasöre (c:\tmp'ye) taşıdık diyelim. Yine verdiğim koda göre,ile yedek getirebiliriz. Ne sormak istediğini tam olarak anlamadım ama bu örnek işini görür umarım.
Not:Backup veritabanı yedekleme işlemidir. Klasör içinden backup alınmaz, klasöre (SQL'de dosyaya) alınır. Restore ise yedeği veritabanına yazma işlemidir. Klasöre yedek getirilmez klasörden (SQL'de dosyadan) yedek getirilir. Bu kavramların karışmasına engel olmak için şiddetle Türkçe kullanmayı tavsiye ediyorum.
Kod: Tümünü seç
BACKUP DATABASE [DB_ADI] TO DISK = 'c:\program\yedek.bck'
Kod: Tümünü seç
RESTORE DATABASE [DB_ADI] FROM DISK = 'c:\tmp\yedek.bck'
Not:Backup veritabanı yedekleme işlemidir. Klasör içinden backup alınmaz, klasöre (SQL'de dosyaya) alınır. Restore ise yedeği veritabanına yazma işlemidir. Klasöre yedek getirilmez klasörden (SQL'de dosyadan) yedek getirilir. Bu kavramların karışmasına engel olmak için şiddetle Türkçe kullanmayı tavsiye ediyorum.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
sayın @sabanakman hocam. Uyarılarınızı dikkate alacağımı belirtir yardımlarınız için teşekkür ederim.
Benim tam olarak anlatmak istediğim şu idi.
Yazmış olduğum program SQL veri tabanında kayıtlı olan "deneme" isimli database'i (deneme databaseinin mdf ve lod dosyasının bulunduğu yer c:\Data) "c:\backup" klasörünün içerisine yedek alıyor. (SQL'den deneme.bak dosyasına).
Ben "C:\backup\deneme.bak" yedeğini restore ederken (dosyadan SQL'e) datanın "orjinal pathi" (mdf ve log dosyası olarak bulunduğu yer) C:\Data olan klasöre değil C:\YeniData (yeni path mdf ve log dosyasının tutulacağı klasör)'e restore etmesini istiyorum.
Yani Backuptan önce;
MDF ve LOG Dosyası şu şekildeydi
C:\DATA\DENEME.MDF
C:\DATA\DENEME.LDF
Restore işleminden sonra
C:\YeniData\Deneme.Mdf
C:\YeniData\Dememe.Ldf
umarım ne yapmak istediğimi tam olarak anlatabilmişimdi.
Saygılarımla.
Kolay gelsin.
Benim tam olarak anlatmak istediğim şu idi.
Yazmış olduğum program SQL veri tabanında kayıtlı olan "deneme" isimli database'i (deneme databaseinin mdf ve lod dosyasının bulunduğu yer c:\Data) "c:\backup" klasörünün içerisine yedek alıyor. (SQL'den deneme.bak dosyasına).
Ben "C:\backup\deneme.bak" yedeğini restore ederken (dosyadan SQL'e) datanın "orjinal pathi" (mdf ve log dosyası olarak bulunduğu yer) C:\Data olan klasöre değil C:\YeniData (yeni path mdf ve log dosyasının tutulacağı klasör)'e restore etmesini istiyorum.
Yani Backuptan önce;
MDF ve LOG Dosyası şu şekildeydi
C:\DATA\DENEME.MDF
C:\DATA\DENEME.LDF
Restore işleminden sonra
C:\YeniData\Deneme.Mdf
C:\YeniData\Dememe.Ldf
umarım ne yapmak istediğimi tam olarak anlatabilmişimdi.
Saygılarımla.
Kolay gelsin.
Bildiğim tek şey, hiç bir şey bilmediğim.
Re: Delphi ile SQL Server 2000 Backup işlemi
Yine eski bir konuyu hortlatayım
Gelen hata mesajı: Cannot open backup device 'c:\program\yedek.bck'. Operating system error 3(The system cannot find the path specified.)
AdoConnection net üzerindeki bir sql'e bağlı çalışıyor.
Kod: Tümünü seç
AdoConnection1.Execute(Format('BACKUP DATABASE [%s] TO DISK = ''%s''',['programDB','c:\program\yedek.bck']));
AdoConnection net üzerindeki bir sql'e bağlı çalışıyor.
Re: Delphi ile SQL Server 2000 Backup işlemi
Yedeği sunucuya alıyor, kendi tarafıma alamıyorum. sunucu da hosting firmasına ait olduğundan erişim yetkim yok. buna alternatif ne yapılabilir.
(Konuyu viewforum.php?f=27 taşımalı mıyım? )
(Konuyu viewforum.php?f=27 taşımalı mıyım? )
Re: Delphi ile SQL Server 2000 Backup işlemi
SQL formatında yedek alan araçlar kullanmanız gerekir. Tabiki performans olarak pek iyi olmayacaktır. Bazı hosting firmasının panellerinde yedek alıp indirebileceğiniz bölümler oluyor, belki bu süreci otomatize edebilirsiniz.
Re: Delphi ile SQL Server 2000 Backup işlemi
Yedeği sunucu tarafında bırakmaya karar verdim;
Yedeği bu şekilde alıyorum. Menager üzerinden yedek aldığımda dosya boyutu 3.8 mb fakat yukarıdaki şekilde aldığımda 606 kb
bu neden kaynaklanıyor olabilir acaba yada kodda hata mı var
Kod: Tümünü seç
ADOConnection1.Execute('BACKUP DATABASE VeriTabani TO DISK = N'+''''+'D:\MSSQL12.MSSQLSERVER\MSSQL\Backup\'+dosya+''''+' WITH COMPRESSION, NOFORMAT, NOINIT, NAME = N'+''''+'VeriTabani backup'+''''+', NOUNLOAD, SKIP');
bu neden kaynaklanıyor olabilir acaba yada kodda hata mı var
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Delphi ile SQL Server 2000 Backup işlemi
Yedekleme için kullanılan parametreler aldığınız yedeği amacınıza göre biçimlendirmenizi sağlar. Mesela WITH COMPRESSION parametresi yedek dosyaınızın sıkıştırılmasını sağlar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .