Forum
Merhaba
SQL Server 2008 üzerinde bir database içinde sadece bir adet tabloyu saatlik yedek almak istiyorum. Bunu yapmamdaki sebep kullandığımız bir ticari programın belirleyemediğimiz bir hatası yüzünden verilerimiz gün içerisinde sürekli silinmekte.
Script olarak tablo yedeğini anlık alabiliyorum. Fakat bunu otomatiğe bağlayamadım. Job ekleyerek yapayım dedim ama kodlarla ilgili çok bilgim olmadığı için bunuda yapamadım.
Bir kaç yerde şu uygulamayı gördüm. Tabloyu komple yeni isim vererek kopyalama Select into ile ama her seferinde aynı isim olacağı için bu kod ile job ayarlayamıyorum.
SELECT kopyalanacakAlanlar
INTO yeniTabloAdi IN veritabaniAdi
FROM kaynakTabloAdi;
bu kodu job içerisinse yazdım ama dediğim gibi her seferinde ikinci tablo ismi aynı olduğu için hata veriyor.
Bu sistemi nasıl yapabilirim yardımcı olabilir misiniz ?
bir kere var olan tablonun şemasını zaten aşağıdaki komutla alabilmektesiniz.
SELECT kopyalanacakAlanlar
INTO yeniTabloAdi IN veritabaniAdi
FROM kaynakTabloAdi;
Aşağıdaki scripti de bir agent joba bağlayarak sürekli gelen insertleri alabilirsiniz.
INSERT INTO yeniTabloAdi
select * from veritabaniAdi where ID>(select MAX(Id) FROM yeniTabloAdi )
ID anatablonuzdan gelen Pkey alanınız yada auto increment alanınız olmalı.
Dikkat: Drop Table komutu komple tablolarınızı sileceği için geri dönüşü olmayan sonuçlara yol açabilir lütfen yeni tablo isminize göre drop table komutunu kullanın.
işlemleriniz hızlı olsun istiyorsanız ve key alanları ile ilgili sorun yaşarım derseniz store prosedure oluşturun 1 adet.
Sp içerisine şunları yazmalısınız.
Sp ilk çalıştırdığınızda muhtemelen hata verecektir o yüzden bu kodu önce çalıştırın "select * into yeni_tablo from eski_tablo" sonra sp oluşturun.
"drop table yeni_tablo
select * into yeni_tablo from eski_tablo"
job kısmında yapmanız gerekeni biliyorsunuz diye düşünüyorum ordaki sql sorgu kısmınada "exec sp_adi" ni yazacaksınız.
Eğer sp işleri kafanızı karıştırdıysa job kısmına direk şunu yazın.
"drop table yeni_tablo
select * into yeni_tablo from eski_tablo"
Öncelikle cevaplarınız için teşekkürler.
PK olan alanı baz almam lazım sorunumuz orada kaynaklanıyor. Programı yazan şirketle görüştüm tabloda revizyon yapacaklar bakalım. Çözüme ulaşamaz isem tekrar yardımlarınıza bağvuracağım.