Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Kod ile veritabanı oluşturmak
#1
Merhaba;
Arkadaşlar, daha önce sorunsuz bir şekilde kod ile veritabanı oluşturdum ve kullandım fakat veritabanın da generatörler ve 1-2 trigger dışında sp ve trigger yoktu. Şimdi bütün işlemlerin yükünü, sp'ler ve triggerlarla, veritabanına yükledim. Yükledim yüklemesine de ibexpert ile "extract metadata" ile veritabanımın ddlsini alıp ibscripte ekliyorum, veritabanını oluşturuyor ama sp'ler tam olarak oluşmuyor dolayısıyla veritabanı çalışmıyor. SQL koduna baktım çok saçma bi düzeni var gibi geldi bana. Örneğin, önce sp oluşturuluyor sonra tablo oluşturuluyor sonra triger oluşturuluyor sonra sp'nin geri kalan bölümü alter ile ekleniyor yani saçma bir düzen.
Normalde bu SQL kodu böylemidir yoksa ibexpertin farklı bir ayarı mı var? 
Kodla oluşturduğum veritabanım düzgün olarak çalışması için ne yapmalıyım, siz nasıl yapıyorsunuz?
Kullandığım veritabanı firebird 2.5.x
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk

Eyvallah..
Cevapla
#2
Merhaba,

Ben kendi bağlantılarımı en başından bu yana Oracle.DataAccess ve Microsoft.Ado bağlantıları ile sağlayıp SQL based query oluşturarak sağladım. InterBase kullanmadığım için bir şey söyleyemem size ama T-SQL ve PL-SQL tabanlı veritabanlarının mütabık olduğu konu bir sql syntax (sözdizimi) geldiği zaman, geçerli bağlantı ve oturum varsa çalıştırmaktır.

SP, trigger, function ve daha fazlasını kod ile otomatik üretebilirsiniz. Generate Create Script mekanizmalarında önce alan işaretlemesi, sonrasında kapsam genişlemesi uygulanıyor. Bu yüzden Alter kodlarına çok fazla takılmayın. Doğrudan SQL Query olarak çalıştırıp detayları paylaşabilir misiniz?
Cevapla
#3
(24-05-2020, Saat: 23:22)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Merhaba,

Ben kendi bağlantılarımı en başından bu yana Oracle.DataAccess ve Microsoft.Ado bağlantıları ile sağlayıp SQL based query oluşturarak sağladım. InterBase kullanmadığım için bir şey söyleyemem size ama T-SQL ve PL-SQL tabanlı veritabanlarının mütabık olduğu konu bir sql syntax (sözdizimi) geldiği zaman, geçerli bağlantı ve oturum varsa çalıştırmaktır.

SP, trigger, function ve daha fazlasını kod ile otomatik üretebilirsiniz. Generate Create Script mekanizmalarında önce alan işaretlemesi, sonrasında kapsam genişlemesi uygulanıyor. Bu yüzden Alter kodlarına çok fazla takılmayın. Doğrudan SQL Query olarak çalıştırıp detayları paylaşabilir misiniz?

@Abdullah ILGAZ  Hocam, teşekkür ederim. Deneyip bilgi vereceğim.
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk

Eyvallah..
Cevapla
#4
@Abdullah ILGAZ  hocam, olmadı yine, veritabanında sorun olmadığı halde kodla oluşturduğum zaman (x tablosu yok, y alanı nerede) gibi hatalar veriyor. Başka bir forumda @sabanakman  hocam şöyle bir cevap verdi ve sanırım sorunun (sorun demek doğrumu bilmiyorum ama) sebebi bu çünkü veritabanı yapım tam cevapta anlatıldığı gibi karmaşık biraz.


Alıntı:Veritabanı yapılarını (ddl) script olarak çıkartmak enteresan senaryolar barındırabiliyor. Mesela bir "trigger" da kullanılan fonksiyon başka bir tablodan bilgi çekiyor olabilir. O tabloda calculated (computed) field (hesaplanmış alan) bulunabilir. Bu alan başka fonksiyon o fonksiyon bir stored procedure kullanıyor olabilir. Hatta bir fonksiyon başka prosedüre veya fonksiyonları ya da bir prosedür başka fonksiyon veya prosedürleri kullanabileceği için birbirlerine gerek duyacaktır. Bu zinciri doğru sıralama ile tutturmak neredeyse imkansız gibi bir durum olabiliyor. Fakat burada kendimce bir tavsiyem olacak. Teorik olarak çalışır gibi gelse de vakit bulup bir çalışma yapma fırsatım bulunmadı. Sıralama bu şekilde gözetilirse başarılı bir veritabanı ddl oluşturmak mümkün olacaktır.
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk

Eyvallah..
Cevapla
#5
Nesne bağımlılıklarını dikkate alarak script içindeki create bloklarını kes/yapıştır ile sıraya koyun. Bu şekilde yapmak zor gelecekse farklı bir araç ile exract metadata işlemi yapmayı deneyin
Cevapla
#6
Aynı işlem basamaklarını buradan da yazalım. Belki birisi vakit ayırıp problemi çözüme kavuşturabilir Big Grin .
 
-Öncelikle kullanıcı tanımlı tipler varsa bunlar oluşturulmalı
-Tüm fonksiyon ve prosedürleri aynı parametrik yapıda kodsuz olarak create script kodu oluşturulmalı.
Örnek:
CREATE PROCEDURE dbo.spTest @CariKodu nvarchar(25), @Sonuc nvarchar(100) OUTPUT
AS
veya
CREATE FUNCTION dbo.fnToInteger(@s_Val nvarchar(50), @DefVal bigint=NULL)
RETURNS bigint
AS
gibi.
-Tabloların sadece alanları ile (Primary Key dahil olacak şekilde) create eden scriptin oluşturulması. Tüm fonksiyon ve prosedürler içi boş da olsa hesaplama alanları problem çıkarmayacaktır. Tabi henüz hesap yapma kabiliyetleri yoktur tabi.
-Tablolara ait indeksler ve ilişkilerin tanımlarının oluşturulması.
-Tablolara ait triggerların oluşturulması.
-Bütün veritabanı elemanları oluşturulduktan soran tüm prosedüre ve fonksiyonların alter edilerek içlerinin doldurulması.
Örnek:
ALTER PROCEDURE dbo.spTest @CariKodu nvarchar(25), @Sonuc nvarchar(100) OUTPUT
AS
selet @Sonuc=Adres from Musteri where CariKodu=@CariKodu
veya
ALTER FUNCTION dbo.fnToInteger(@s_Val nvarchar(50), @DefVal bigint=NULL)
RETURNS bigint
AS
 if isNumeric(@s_Val)=1
    return cast(@s_Val as int)
 else
    return null
gibi. Bu şekilde nerede hangi prosedüre veya foksiyona ihtiyaç olsa bile bu içi boş da olsa mevcut olduğundan create scriptleri hata vermeyecek ama tüm sql sorgu işini bitirdikten sonra veritabanı (teorik olarak) eksiksiz oluşturulacaktır. Hazır 3. parti uygulamalar arasında bu gibi karmaşık yapıyı çözen var mıdır pek araştırmadım ama kendi ddl sql çıkarma uygulamamızı geliştirirsek bu yapıyla çözülebilir gibi sanki Big Grin .
Cevapla
#7
Merhaba,

Öğrenme açısından güzel bir çalışma, ancak pratikte son derece büyük zaman kaybı kod ile veritabanı işlemleri.
Nasıl yapılacağını öğrenmenin en güzel yolu;

Ibexpert ile bir veritabanı oluşturun. Bir kaç tablo açın. Bu tablolara indexler atayın. Sonra tablonun DDL sekmesine bakın.
Yaptığınız herşey orada metin olarak sunuluyor. İnceleyip "haaa böyleymiş" demeniz sözkonusu.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Photo veritabanı düzeltme akuyumcu63 4 589 26-05-2020, Saat: 19:25
Son Yorum: akuyumcu63
  çözüldü- DBeaver editöründe yeni veritabanı oluşturma sadikacar60 9 2.444 16-02-2019, Saat: 22:44
Son Yorum: sadikacar60
  FireBird veritabanı ile çalışanlar için IBExpert tavsiyyesi BlackHawk 5 2.753 30-04-2018, Saat: 09:44
Son Yorum: boreas
  Firebird Uzak veritabanı yedekleme masteryoda 9 4.162 26-01-2018, Saat: 17:47
Son Yorum: rmzgenius
  Firebird veritabanı güvenliği Hk! ozcanm 10 6.686 08-08-2017, Saat: 15:14
Son Yorum: klavye



Konuyu Okuyanlar: 1 Ziyaretçi