Forum

SQL Server Tablo Ko...
 
Bildirimler
Hepsini Temizle

SQL Server Tablo Kopyalama

4 Yazılar
4 Üyeler
0 Likes
2,880 Görüntüleme
(@abdullahucar)
Gönderiler: 2
New Member
Konu başlatıcı
 

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?

 

 

 
Gönderildi : 15/11/2012 13:36

(@HalitGOKTAS)
Gönderiler: 48
Trusted Member
 

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.

 
Gönderildi : 15/11/2012 18:01

(@GokhanDOGAN)
Gönderiler: 780
Prominent Member
 

Mrb

Sql de "change data capture" ya bakabilirsin.

Yada sql server'da alwaysOn özelliği yapabilirsin. 2012 ise eğer. 

 
Gönderildi : 22/11/2012 03:49

(@BarisKemiksiz)
Gönderiler: 150
Estimable Member
 

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?

 
Gönderildi : 15/07/2014 20:59

Paylaş: