Delphi ile SQL Server 2000 Backup işlemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sunye
Üye
Mesajlar: 105
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

Delphi ile SQL Server 2000 Backup işlemi

Mesaj gönderen sunye »

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.
Bildiğim tek şey, hiç bir şey bilmediğim.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

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
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

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:

Kod: Tümünü seç

MasterConn.Execute(Format('BACKUP DATABASE [%s] TO DISK = ''%s''',[DBAdi,DosyaAdi]));
Yedek getirirken:

Kod: Tümünü seç

MasterConn.Execute(Format('RESTORE DATABASE [%s] FROM DISK = ''%s%s''',[DBAdi,YolTamamla(KlasorAdi),DosyaAdi]));
Bu kodlar MasterConn TADOConnection bileşenim master veritabanına bağlı iken çalışıyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
sunye
Üye
Mesajlar: 105
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

Mesaj gönderen sunye »

Hocam verdiğin kod çalıştı çok teşekkür ederim.
Bildiğim tek şey, hiç bir şey bilmediğim.
Kullanıcı avatarı
sunye
Üye
Mesajlar: 105
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

Mesaj gönderen sunye »

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.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Yukarıdaki kodlarıma göre,

Kod: Tümünü seç

BACKUP DATABASE [DB_ADI] TO DISK = 'c:\program\yedek.bck'
ile aldığımız yedeği başka klasöre (c:\tmp'ye) taşıdık diyelim. Yine verdiğim koda göre,

Kod: Tümünü seç

RESTORE DATABASE [DB_ADI] FROM DISK = 'c:\tmp\yedek.bck'
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.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
sunye
Üye
Mesajlar: 105
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

Mesaj gönderen sunye »

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.
Bildiğim tek şey, hiç bir şey bilmediğim.
nodetail
Üye
Mesajlar: 74
Kayıt: 04 Eki 2008 10:30

Re: Delphi ile SQL Server 2000 Backup işlemi

Mesaj gönderen nodetail »

Yine eski bir konuyu hortlatayım :)

Kod: Tümünü seç

AdoConnection1.Execute(Format('BACKUP DATABASE [%s] TO DISK = ''%s''',['programDB','c:\program\yedek.bck']));
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.
nodetail
Üye
Mesajlar: 74
Kayıt: 04 Eki 2008 10:30

Re: Delphi ile SQL Server 2000 Backup işlemi

Mesaj gönderen nodetail »

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? )
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Delphi ile SQL Server 2000 Backup işlemi

Mesaj gönderen mkysoft »

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.
nodetail
Üye
Mesajlar: 74
Kayıt: 04 Eki 2008 10:30

Re: Delphi ile SQL Server 2000 Backup işlemi

Mesaj gönderen nodetail »

Yedeği sunucu tarafında bırakmaya karar verdim;

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');
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
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Delphi ile SQL Server 2000 Backup işlemi

Mesaj gönderen sabanakman »

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. - .
Cevapla