Forum
merhaba.
benim sorunum kullandığım database de bulunan bir tabloyu başka bir database kopyalamak ve daha sonra ise günlük değişen satırları aktarmaya devam etmek istiyorum.
hangi komut yada komutları kullanabilirim?
yada başka nasıl bir yöntem kullanabilirim?
select * into hedefdatabase.dbo.tabloadi from kaynakdatabase.dbo.tabloadi
Bu şekilde tablonun içeriğini diğer databas'e aktrabilirsiniz (index vs. kısımları aktarmaz.).
Değişen alanlar yada yeni eklenen alanlar için iki tabloyu karlışaltırarak hedefe gönderme,yeniden gönderme veya hedefte update yapmak gerekiyor.
Yeni eklenenler için
insert into hedefdatabase.dbo.tabloadi (alan1,alan2,alan3, x,x,x,x,x,..... )
select alan1,alan2,alan3, x,x,x,x,x,.... from kaynakdatabase.dbo.tabloadi where tabloadi.ISLEMID not in
(select ISLEMID from hedefdatabase.dbo.tabloadi where 1=1)
Bu şekilde 2 tablo arasında karşılaştırma yaparak hedefte olmayan yeni eklenmiş satırları aktrabilirsiniz. Bu sorguyu Sql Agent'e eklerseniz, sizin istedğiniz satte bu sorgu çalışır ve eşleştirmeyi tamamlarsınız.
Değişen bilgiler için de benzer bir sorgu yapabilirsiniz. IN yerine her iki tarafda olup ta değişeni bulmak için <> kullanarak, eşit olmayanları
karşılaştırıp, hedeften eşit olmayanı silip , güncel bilgiyi gönderebilirsiniz.
Agent'ta çalışacak sorgular;
Sırasıyla
1- Karşılaştırma sorgusu ile değişenleri karşı taraftan bulup silme
GO
2-Olmayanları aktarma (Değişenler silindiği için güncel data aktarılacak)
Veya, bu işlemler yerine bir trigger oluşturup, trigger ile anlık güncelleme ve ekleme yapabilirsiniz sanırım.
Muhtemelen bu şekilde çözebilirsiniz diye düşünüyorum.
Mrb
Sql de "change data capture" ya bakabilirsin.
Yada sql server'da alwaysOn özelliği yapabilirsin. 2012 ise eğer.
Halit Bey çok güzel örneklemişsiniz fakat şöyle bir durum var örneğin isimleri farklı 2 database düşünün içerisindeki tablolar aynı hedefteki tabloda sütünlar açık select * into hedefdatabase.dbo.tabloadi from kaynakdatabase.dbo.tabloadi komutunu çalıştırdımda There is already an object named hatası alıyoum sanırım tablo orada olduğu için var olan tablodaki tüm verileri var olan diğerine koyalamak için nasıl bir yol izlemeleyiz?