Yorumları: 483
Konuları: 80
Kayıt Tarihi: 28-12-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.019
Programcı
30-08-2020, Saat: 15:06
(Son Düzenleme: 31-08-2020, Saat: 08:53, Düzenleyen: cinarbil.)
İyi günler.
Sql da bulunan data2019 adlı database i data2020 adıyla kopyalamak istiyorum. (Programda yıl sonu devri için)
Şu an bu işi Sql Management Databases copy wizard veya management içinde script dosyası oluşturarak
bunun birkaç satırını değiştirerek management içinde sqlquery ile içeri alıyorum.
Bunu delphi içinden nasıl yapmalıyım
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Yorumları: 483
Konuları: 80
Kayıt Tarihi: 28-12-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.019
Programcı
(31-08-2020, Saat: 02:09)mkemaleker Adlı Kullanıcıdan Alıntı: (30-08-2020, Saat: 15:06)cinarbil Adlı Kullanıcıdan Alıntı: İyi günler.
Sql da bulunan data2019 adlı database i data2020 adıyla kopyalamak istiyorum. (Programda yıl sonu devri için)
Şu an bu işi Sql Management Databases copy wizard veya management içinde script dosyası oluşturarak
bunun birkaç satırını değiştirerek management içinde sqlquery ile içeri alıyorum.
Bunu delphi içinden nasıl yapmalıyım
SELECT * INTO New_Table
FROM YourTable
mssql için şeklinde yapsanız uygun olur mu hocam? ben oracle için
CREATE TABLE new_table
AS (SELECT * FROM old_table);
şeklinde kullanıyorum.
Cevap için teşekkür ederim. Bu şekilde yanlış bilmiyorsan sadece bir table yapılabilir.
Benim ihtiyacım komple database kopyalamak.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Yorumları: 228
Konuları: 42
Kayıt Tarihi: 05-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.168
Programcı
31-08-2020, Saat: 09:02
(Son Düzenleme: 31-08-2020, Saat: 09:03, Düzenleyen: bydelphi.)
Merhabalar,
bence delphi tarafında otomatik olarak 2 şekilde yapılabilir bu işlem hocam.
1- İlgili databaseyi detach edersin database boşa çıkar. filecopy ile bu databasenin bir kopyasını çıkarırsın istediğin isimle rename edersin. sonra bu iki veritabanını (orjinal ve yeni) tekrar attch edersin.
2- İlgili databasenin bir yedeğini alırsın. sonra bunu farklı bir database isminde tekrar yedeği restore edip yükleyebilirsin .
Bu iki metodun tüm işlemlerini delphi tarafında otomatik olarak rahatlıkla yapılabilir.
Veritabanını içeri aldıktan sonra scriplerle içeride istediğin dönem yıl değişikliklerinide yaparsın.
Sorsaydı Bilirdi Sormuyor ki Bilsin.
Bilseydi Sorardı Bilmiyor ki Sorsun.
Yorumları: 4
Konuları: 0
Kayıt Tarihi: 19-10-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 21
Başlangıç
Selam Arkadaşım
Öncelikle Program içinden database'ni (backup)yedeklemen ve farklı bir isimle (restore) geri çıkarman gerekli bunun için
1.aşama database bağlantındaki kullanıcının master'a ulaşım yetkisi olmalı (yani systemadmin)
2.aşama database kapatılıp mastera cekip connect olmalısın
zc.Connected := False;
zc.Database := 'master';
zc.Connected := True;
3.aşama dosyanın yedekleme adını oluşturmasın ve sol olarak parametre yollamalısın
nm := 'D:\xxx\geciciyedek\data2019.bak';
ydk.close;
ydk.ParamByName('vr').Value := nm;
ydk.ExecSQL;
ydk sql içindeki kod
BACKUP DATABASE [data2019] TO
DISK = :vr
WITH NOFORMAT, NOINIT, NAME = N'data2019-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
4.aşama bu yedeklediğin database'yi farklı bir isimle restore edebilirsin
nm := 'D:\xxx\geciciyedek\data2019.bak';
grd.close;
grd.ParamByName('vr').Value :=nm;
grd.ExecSQL;
grd.sql içi kod
RESTORE DATABASE [data2020] FROM DISK = :vr WITH FILE = 1, NOUNLOAD, STATS = 10
bu aşamada database oluşmuş olur
bağlantını master dan alıp data2020 üzerine çekersin
zc.Connected := False;
zc.Database := 'data2020';
zc.Connected := True;
database yeni yıla kopyalanmış ve programın yeni databaseye bağlanmış olur.
iyi çalışmalar