CREATE SHADOW hakkında

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

CREATE SHADOW hakkında

Mesaj gönderen akuyumcu63 »

merhaba

ibQuery e aşağıdaki kodu yazıyorum close, open yaparak yedeklemeyi yapabiliyorum.

Kod: Tümünü seç

CREATE SHADOW 1 AUTO 'C:\BS_Yedek\data.BSY' 
aşağıdaki kod çalışmıyor. neden çalışmadığını çözemedim.

Kod: Tümünü seç

frmDm.IBQryCanliYedekC.Close;
frmDm.IBQryCanliYedekC.SQL.Clear;
frmDm.IBQryCanliYedekC.SQL.Add('CREATE SHADOW 1 AUTO "C:\BS_Yedek\data.BSY"');
frmDm.IBQryCanliYedekC.Open;
asıl yapmak istediğim yedeğin yolunu belirterek yedekleme yapmak, query yedeğin yolunu bir EDIT ten alsın bunu nasıl yapabilirim.

Teşekkür ederim.
İsteyen, yapabildiğinden daha fazlasını yapar.
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: CREATE SHADOW hakkında

Mesaj gönderen akuyumcu63 »

merhaba;

veri tabanımız birden fazlaysa, Edit te ismi geçen database in yedeğini alamazsak canlı yedek burada fazla işe yaramayacak,
herhangi bir isimle oluşturduğumuz database in yedeğini herhangi bir isimle oluşturabilmeliyiz diye düşünüyorum. canlı yedek için bu nasıl olabilir.

ilgilenen arkadaşlara şimdiden teşekkürler.
İsteyen, yapabildiğinden daha fazlasını yapar.
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: CREATE SHADOW hakkında

Mesaj gönderen omurolmez »

Çift tırnak (") tek tırnak (') farkından olabilir mi ?
Ömür Ölmez
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: CREATE SHADOW hakkında

Mesaj gönderen akuyumcu63 »

merhaba;
çift tırnak veya tek tırnaktan değil ikisini de denedim. normalde query içinde tek tırnak, haricen kod yazınca çift tırnak kullanıyoruz. bunda her türlüsünü denedim olmadı.
İsteyen, yapabildiğinden daha fazlasını yapar.
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: CREATE SHADOW hakkında

Mesaj gönderen omurolmez »

Eğer ilk örneğiniz gerçekten çalışıyorsa, büyük ihtimalle oluşturduğunuz sorgu cümlesinde gözünüzden kaçan bir hata vardır. Aldığınız hata mesajı bu hata hakkında size yardımcı olur.
Ömür Ölmez
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: CREATE SHADOW hakkında

Mesaj gönderen sabanakman »

Çalışmıyor, hata veriyor gibi belirsiz cümlelerin cevap yazmaya niyetli kişileri sorundan uzaklaştıran belirsizliklerdir. Bunun yerine problemleri ("..." hata mesajını alıyorum, program cevap vermeden bekliyor ... gibi) nokta atışı tanımlarsanız daha sağlıklı, isabetli ve hızlı sonuç elde edebilirsiniz. Eğer aldığınız hata
CommandText does not return a result set.
gibi br hata ise sorgunuz çalışıyor ama sonuç olarak kayıt gösteremiyorum diyor. Bu türden kayıt üretmeyen sorguları .Open ile açmaya çalışmak yerine, .ExecSQL ile çalıştırmayı denemelisiniz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: CREATE SHADOW hakkında

Mesaj gönderen akuyumcu63 »

merhaba;
canlı yedek alma işlemini istediğim şekilde yapamayınca ertelemiştim. cevap yazan arkadaşlara çok teşekkür ederim.
sabanakman hocam elbette haklı eleştirilerde bulunmuş, olayı tekrar izah etmeye çalışacağım.

Kod: Tümünü seç

CREATE SHADOW 1 AUTO 'D:\BS_Yedek\D_CARIYONSIS.BSY1'
yukarıdaki kod Query nin içine yazıldığı zaman close, open yapılarak yedeklemenin yapılması sağlanıyor. buraya kadar bir sıkıntı yok

sıkıntı aşağıdaki kodda başlıyor. yukarıdaki kodu aşağıdaki şekilde Query e göndermeye çalıştığım zaman

Kod: Tümünü seç

frmDm.IBQryCanliYedekC.Close;
frmDm.IBQryCanliYedekC.SQL.Clear;
frmDm.IBQryCanliYedekC.SQL.Add('CREATE SHADOW 1 AUTO "D:\BS_Yedek\D_CARIYONSIS.BSY1"');   // Hatanın alındığı satır 
frmDm.IBQryCanliYedekC.Open;
SQL Error Kode =-104
Token unKnow Line1 column 23 şeklinde bir hata mesajı veriyor. çift tırnakları tek tırnak yapınca da delphi derleme hatası veriyor. bilinmeyen değer mesajı veriyor. Open yerine ExecSQL yazınca da değişen bir durum yok.
Programımda birden fazla database olma durumu olduğu için şunu yapmaya çalışıyorum. hangi database ile program açıldıysa o database nin ismiyle belirttiğim klasör yoluna yedeğin alınmasını sağlamak, hem C hemde D sürücüsüne yedek almaya çalışıyorum. inşallah anlatabilmişimdir.

teşekkür ederim.
İsteyen, yapabildiğinden daha fazlasını yapar.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: CREATE SHADOW hakkında

Mesaj gönderen mrmarman »

Merhaba.

- Belki bununla ilgilidir belki de değildir emin değilim ama: :roll:

- Sunucu bilgisayar eğer ağ altındaki başka bir bilgisayar ise D: yolu yerine ağ altında, ama sunucunun login olduğu aktif kullanıcıyı tanımlayıp READ/WRITE yetkisi verdiğiniz bir ağ konumu belirlemelisiniz. Örneğin \\agnoktasi\BS_Yedek\D_CARIYONSIS.BSY1 şeklinde denersiniz.

- Siz client makinede bu komutu yazıyorsunuz ama bildiğim kadarıyla (SQLServer'da öyle bunda da benzerdir diye değerlendiriyorum) sunucu makineye D: sürücüsüne yaz diyor ama bunun orjinal lokasyonundaki D: anlamını yüklüyor olabileceğini düşündüm. :idea:
Resim
Resim ....Resim
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: CREATE SHADOW hakkında

Mesaj gönderen akuyumcu63 »

uzak bağlantı, ağ olayı yok henüz. program, firebird aynı makinada
İsteyen, yapabildiğinden daha fazlasını yapar.
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: CREATE SHADOW hakkında

Mesaj gönderen omurolmez »

> ibQuery e aşağıdaki kodu yazıyorum close, open yaparak yedeklemeyi yapabiliyorum.
>
> CREATE SHADOW 1 AUTO 'C:\BS_Yedek\data.BSY'
>

Eğer yukarıdaki durum kesin ise, aşağıdaki kodun da çalışması gerekiyor :

Kod: Tümünü seç

frmDm.IBQryCanliYedekC.Close;
frmDm.IBQryCanliYedekC.SQL.Clear;
frmDm.IBQryCanliYedekC.SQL.Add(' CREATE SHADOW 1 AUTO ''C:\BS_Yedek\data.BSY''');   // Hatanın alındığı satır
frmDm.IBQryCanliYedekC.Open;

// Tek tırnak yapısının anlaşılması için, aynı kodu ' yerine * kullanarak (Tabii ki çalışmaz) :
// frmDm.IBQryCanliYedekC.Close;
// frmDm.IBQryCanliYedekC.SQL.Clear;
// frmDm.IBQryCanliYedekC.SQL.Add(*CREATE SHADOW 1 AUTO **C:\BS_Yedek\data.BSY***);   // Hatanın alındığı satır
// frmDm.IBQryCanliYedekC.Open;
Ömür Ölmez
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: CREATE SHADOW hakkında

Mesaj gönderen akuyumcu63 »

merhaba;
evet kod çalıştı. birden fazla database ile çalışma durumundan dolayı, program hangi database ile açıldıysa o databasenin ismini alarak yedekleme işlemini yapıyor. canlı yedek işleminde bu durum ne kadar sağlıklı çalışıyor onu denemedim. farklı databaselerle programı çalıştırdığım zaman belirttiğim klasöre açılan databasenin ismiyle canli yedek oluşuyor. kod aşağıdaki gibidir.

Kod: Tümünü seç

      if not DirectoryExists('D:\Yedek') then//klasör yoksa oluştur
      if not CreateDir('D:\Yedek') then ShowMessage('Oluşturulamadı');
      DataBaseAdi:=AnsiReplaceStr(txtDataBaseler.Text,'.FDB','');
      CANLIYEDEKYOL:= 'D:\Yedek\'+DataBaseAdi+'.CYD';
      CANLIYEDEKYOL :=''''+CANLIYEDEKYOL+'''';
      frmDm.IBQryCanliYedekD.Close;
      frmDm.IBQryCanliYedekD.SQL.Clear;
      frmDm.IBQryCanliYedekD.SQL.Add('CREATE SHADOW 1 AUTO ');
      frmDm.IBQryCanliYedekD.SQL.Add(CANLIYEDEKYOL);
      frmDm.IBQryCanliYedekD.Open;
herkese çok teşekkür ederim.
İsteyen, yapabildiğinden daha fazlasını yapar.
Cevapla