Kaybolan Database için...

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
hbulus
Üye
Mesajlar: 161
Kayıt: 14 Tem 2003 10:30
İletişim:

Kaybolan Database için...

Mesaj gönderen hbulus » 01 Kas 2015 09:40

Uygulamamın kullanıldığı bilgisayarın harddiski kullanılamayacak şekilde hasar gördüğü için program ve sql server database'im uçtu.
Yedekelerimde de database hata veriyor ve restore yapamıyorum. Projemin yedekleri var. Projedeki data modüldeki table ve
query'lerden database yapısını yeniden oluşturabileceğim bir yöntem önerebilir misiniz? (yaklaşık 15 tablom var)
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Kaybolan Database için...

Mesaj gönderen mrmarman » 01 Kas 2015 10:01

Yedekler de fiziksel olarak zarar mı gördü, yoksa kurulum yaptığınız sqlserver hata ile geri çeviriyor?

Hata neyse buraya yazın beraber araştıralım.
Resim Resim

hbulus
Üye
Mesajlar: 161
Kayıt: 14 Tem 2003 10:30
İletişim:

Re: Kaybolan Database için...

Mesaj gönderen hbulus » 01 Kas 2015 11:03

Yedekleri harddisk kurtarma programı ile almaya çalıştım, ama olmadı. Dosyayı gösteriyor ama okuyamıyor.
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....

thelvaci
Kıdemli Üye
Mesajlar: 769
Kayıt: 11 Tem 2010 06:17
Konum: Istanbul
İletişim:

Re: Kaybolan Database için...

Mesaj gönderen thelvaci » 02 Kas 2015 09:51

Öncelikle geçmiş olsun, Delphi tarafında kullandığınız tablo yada query bileşenlerinizin içinde Field tanımları mevcut mu ?

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Kaybolan Database için...

Mesaj gönderen mrmarman » 02 Kas 2015 10:17

Kaynak dosyaya bakılarak table structure yapısı bir şekilde yeniden oluşturulabilir.

@thelvaci belirttiği gibi dinamik olarak tablolarınızı projeniz içinden tanımlayıp oluşturuyorsanız iş akışınızı hemen yapılandırıp yolunuza devam edebilirsiniz.

Elde edilen yedekler yapısal olarak bozuk olabilir. Şimdi google ile bakınınca gördüğüm bu linkteki gibi online veya arayınca bulunabilecek tamir programlarından birisini araştırarak başlayın. Verdiğim link muhtemelen para isteyecektir ama sadece yapısal olarak tamir edilebilirlik hakkında fikir verecektir.

Eğer elinizde pe / hex editor benzeri bir tool varsa kurtarılan BAK dosyaya bakın. Başlangıç (header) kısmı aşağıdaki resimdeki gibi başlıyorsa şanslısınız demektir.

Resim
Resim Resim

hbulus
Üye
Mesajlar: 161
Kayıt: 14 Tem 2003 10:30
İletişim:

Re: Kaybolan Database için...

Mesaj gönderen hbulus » 02 Kas 2015 09:20

Muharrem bey,
İlginize, dertlenip benim problemime yönelik vaktiniz ayırıp araştırmanıza teşekkür ederim.
Emek çeken insan, başkasının emeğinin kıymetini anlıyor....

Gelelim benim problemime;

Projemde fields editor'de fields'leri select all yapıp notepad'e yapıştırdım. Aşağıdaki şekilde
kayıtları döküyor:
object DOSYABULUS_TAKIP_NO: TSmallintField
FieldName = 'BULUS_TAKIP_NO'
ReadOnly = True
end
object DOSYADOSYA_NO: TStringField
FieldName = 'DOSYA_NO'
end
object DOSYAGECICI_DOSYA_NO: TStringField
FieldName = 'GECICI_DOSYA_NO'
end
object DOSYAPOLICE_NO_2: TStringField
FieldName = 'POLICE_NO_2'
Size = 25
end
object DOSYABULUS_KABUL_NO: TStringField
FieldName = 'BULUS_KABUL_NO'
end
object DOSYAMAGDUR_PLAKA_1: TStringField
FieldName = 'MAGDUR_PLAKA_1'
end
object DOSYAMAGDUR_SURUCU_ADI_SOYADI_1: TStringField
FieldName = 'MAGDUR_SURUCU_ADI_SOYADI_1'
Size = 50
end
object DOSYAMAGDUR_SURUCU_TCKIMLIK_NO_1: TStringField
DisplayWidth = 11
FieldName = 'MAGDUR_SURUCU_TCKIMLIK_NO_1'
Size = 11
end
object DOSYAMAGDUR_SURUCU_TEL_1: TStringField
DisplayWidth = 15
FieldName = 'MAGDUR_SURUCU_TEL_1'
EditMask = '!\(999\) 000 00 00;1;_'
Size = 15
end
object DOSYAMAGDUR_RUHSAT_SAHIBI_1: TStringField
FieldName = 'MAGDUR_RUHSAT_SAHIBI_1'
Size = 50
end
.
.
.
.
Buradan tabloları yeniden oluşturmaya başladım. Biraz vakit alacak ama, ufak tefek hataları da
projeyi derlerken görüp halledeceğim artık.

Tekrar teşekkürler...
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....

thelvaci
Kıdemli Üye
Mesajlar: 769
Kayıt: 11 Tem 2010 06:17
Konum: Istanbul
İletişim:

Re: Kaybolan Database için...

Mesaj gönderen thelvaci » 02 Kas 2015 09:46

Kolay bir yol önerebiliriz belki eğer tamamlamadı iseniz işleminizi. Bağlantı component'inizi (muhtemelen TADOConnection) yeni oluşturacağınız boş bir veritabanına ayarlayın ve connection'u kurun. Ardından formlarınızın OnCreate olay yöneticinde herhangi bir tablo açma işlemi yapmadı iseniz; ana formunuzun üzerine atacağınız bir button'un altında ilgili formlarınızı create ederek TRttiContext ile TDataSet aratabilir ve içlerindeki field'larda dönebilir buna göre bir Sql cümleciği oluşturarak tablolarınızı oluşturabilirsiniz TADOConnection.Execute metodu ile. Yada; yeni bir unit tanımlar ve TDataSet'e bir helper sınıf yada interposer sınıf yazabilir, bu sınıfta DoBeforeOpen metodunu override edip; içinde tablo oluşturma kodunuzu yazıp inherited çağrımını yapmazsınız, ardından da tüm tüm formlarınızın interface bölümünün en sonuna bu yeni unitinizi uses kısmına eklersiniz ;)

Cevapla