Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firebird Database Oluşturma
#1
Merhaba Arkadaşlar,

Basit anlamda "Otopark Abone Cari takibi" için bir uygulama yazdım. Veritabanı olarak  "Firebird 2.5.8" kullandım. "SQL manager 2005 for interbase and Firebird" ile veritabanını oluşturdum. İDE olarak Delphi 10.3 Community Edition ile yazdım ve veritabanına FireDAC kullanarak bağlandım.

Programın kullanacak kişiye programı verdiğimde, program ilk açılışta veritabanı dosyası yoksa kendisinin oluşturmasını istiyorum. Mevcut veritabanını boş iken SQL haline alıp tekrar oluşturmam mümkün mü ? Veritabanı konusunda tecrübem yok. Eskiden IBExtract vardı diye hatırlıyorum. FireDAC tarafını ilk defa kullanıyorum. Çözüm önerilerinizi bekliyorum.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Sadece Hobiciyim..
WWW
Cevapla
#2
Selam,
Kod ile yapmak yerine, bir veritabanını metadata olarak backup alıp, gerektiğinde restore yapabilirsiniz.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#3
(15-04-2019, Saat: 10:13)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Selam,
Kod ile yapmak yerine, bir veritabanını metadata olarak backup alıp, gerektiğinde restore yapabilirsiniz.

Ornek var mi hocam ?
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Sadece Hobiciyim..
WWW
Cevapla
#4
(15-04-2019, Saat: 11:03)SercanTEK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(15-04-2019, Saat: 10:13)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Selam,
Kod ile yapmak yerine, bir veritabanını metadata olarak backup alıp, gerektiğinde restore yapabilirsiniz.

Ornek var mi hocam ?

/////////////////// BACKUP
 cmd := ANA.AknConfig.EXEKLASOR+'data\gbak.exe';
 Stream := TMemoryStream.Create;
 try
 Application.ProcessMessages;
   ANA.AknConfig.ReadOutputFromExternalProcess('',
     cmd +
     ' -b '+SERVIP+':'+VYOLU+ANA.QYILDBADI.AsString+'.FDB '+ANA.AknConfig.EXEKLASOR+'data\yyil.fbk -user sysdba -pass masterkey',
     Stream, Memo2);
 finally
   Stream.Free;
Memo2.Lines.Add(INTTOSTR(ANA.QYILCALISMAYILI.AsInteger)+' Çalışma yılının kopyası alındı...');
 end;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////// RESTORE
 cmd := ANA.AknConfig.EXEKLASOR+'data\gbak.exe';
 Stream := TMemoryStream.Create;
 try
 Application.ProcessMessages;
   ANA.AknConfig.ReadOutputFromExternalProcess('',
     cmd +
     ' -r o -v -user sysdba -pass masterkey '+ANA.AknConfig.EXEKLASOR+'data\yyil.fbk '+SERVIP+':'+VYOLU+'ETICARI_DB_'+FLOATTOSTR(YYIL.Value)+'.FDB',
     Stream, Memo2);
 finally
   Stream.Free;
Memo2.Lines.Add(FLOATTOSTR(YYIL.Value)+' Çalışma yılı oluşturuldu...');
 end;

GBAK ile yukarıdaki şekilde backup alıp restore yapıyorum. Sizde önce metadata yı backup alıp exe ye gömüp, eğer veritabanı yok ise ordan restore yapabilirsiniz sanırım. Bu arada AknConfig bir arkadaşımın yazdığı içinde birçok function barındıran yardımcı bir component, onu kaale almayın, siz shellexecute ile yapabilirsiniz. 

Ben ETICARI_DB_<CalismaYili>.FDB şeklinde her yıl için ayrı veritabanları oluşturuyorum.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#5
Teşekkürler. Değerlendireceğim.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Sadece Hobiciyim..
WWW
Cevapla
#6
(15-04-2019, Saat: 11:31)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(15-04-2019, Saat: 11:03)SercanTEK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Ornek var mi hocam ?

/////////////////// BACKUP
 cmd := ANA.AknConfig.EXEKLASOR+'data\gbak.exe';
 Stream := TMemoryStream.Create;
 try
 Application.ProcessMessages;
   ANA.AknConfig.ReadOutputFromExternalProcess('',
     cmd +
     ' -b '+SERVIP+':'+VYOLU+ANA.QYILDBADI.AsString+'.FDB '+ANA.AknConfig.EXEKLASOR+'data\yyil.fbk -user sysdba -pass masterkey',
     Stream, Memo2);
 finally
   Stream.Free;
Memo2.Lines.Add(INTTOSTR(ANA.QYILCALISMAYILI.AsInteger)+' Çalışma yılının kopyası alındı...');
 end;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////// RESTORE
 cmd := ANA.AknConfig.EXEKLASOR+'data\gbak.exe';
 Stream := TMemoryStream.Create;
 try
 Application.ProcessMessages;
   ANA.AknConfig.ReadOutputFromExternalProcess('',
     cmd +
     ' -r o -v -user sysdba -pass masterkey '+ANA.AknConfig.EXEKLASOR+'data\yyil.fbk '+SERVIP+':'+VYOLU+'ETICARI_DB_'+FLOATTOSTR(YYIL.Value)+'.FDB',
     Stream, Memo2);
 finally
   Stream.Free;
Memo2.Lines.Add(FLOATTOSTR(YYIL.Value)+' Çalışma yılı oluşturuldu...');
 end;

GBAK ile yukarıdaki şekilde backup alıp restore yapıyorum. Sizde önce metadata yı backup alıp exe ye gömüp, eğer veritabanı yok ise ordan restore yapabilirsiniz sanırım. Bu arada AknConfig bir arkadaşımın yazdığı içinde birçok function barındıran yardımcı bir component, onu kaale almayın, siz shellexecute ile yapabilirsiniz. 

Ben ETICARI_DB_<CalismaYili>.FDB şeklinde her yıl için ayrı veritabanları oluşturuyorum.

Aradigim bi kod du mesajim bulunsun projeme ekleyecegim
Cevapla
#7
@SercanTEK isimli arkadaşımızın bahsettiği (anladığım kadarıyla) script üzerinden veritabanı oluşturmakla ilgili. Bir veritabanını restore edebilmek için backup'lı halinin mevcut olması gerekir. Bu da, program ile birlikte backup dosyasının da gönderilmesi demek. Benim anladığım, sadece EXE dosyasını gönderip çalıştırdığımızda eğer veritabanı yok ise oluştursun isteniyor.

Veritabanı tasarımınız tamamen hazır ve sonradan değişmeyecekse, kullanmış olduğunuz veritabanı aracından (IBExpert, Database Workbench, EMS SQL Manager for Firebird) veritabanınızın DDL dosyasını oluşturabilirsiniz. DDL dosyası CREATE DATABASE xxx şeklinde başlar, ardından CREATE TABLE xxx komutları ile tüm veritabanı script'ini oluşturur. Sizin bahsettiğiniz IBExtract'da bu işi yapıyor zaten. Bu DDL dosyasının içindeki script'i de kopyalayarak program içinde kullanma şansınız olur. Sonradan yaptığınız değişiklikler içinde sadece bu script'i değiştirirsiniz.

Takıldığınız bir konu olursa buradan yardımcı olmaya çalışırım. Kolay gelsin.
Dmitry Kouzmenko ve Dmitry Yemanov ile çalışmış , Eski IBSurgeon personeli, Kıdemli Firebird Kurtarma Uzmanı, Firebird Foundation bağışçısı...
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Visual Studio Code kullanıcıları için Firebird Eklentisi rmzgenius 2 268 31-05-2019, Saat: 10:32
Son Yorum: edo
  Interbase/Firebird Veri Aktarımı [Ücretsiz] rmzgenius 0 226 19-03-2019, Saat: 09:11
Son Yorum: rmzgenius
  firebird forum klavye 2 724 01-03-2019, Saat: 16:01
Son Yorum: rmzgenius
  çözüldü- DBeaver editöründe yeni veritabanı oluşturma sadikacar60 9 821 16-02-2019, Saat: 22:44
Son Yorum: sadikacar60
  Firebird 3 embedded versiyon autoinc alan problemi canbir 5 1.149 21-11-2018, Saat: 22:38
Son Yorum: SercanTEK



Konuyu Okuyanlar: 1 Ziyaretçi