Forum
Merhabalar,
Farklı networkler de bulunan iki ayrı SQL server 2008 R2 yi linked server ile konuşturdum. Fakat birinci serverda satis tablosuna kayıt geldiğinde ikinci serverdaki satistakip tablosuna bu kaydı atmak istiyorum. Bunun için trigger yazmayı deniyorum.Aşağıdaki kodda satis tablosunun tesis alanı (PLANT) sadece 10 olan kayıtları diğer serverdaki satistakip tablosuna kaydetsin bunu nasıl yapabilirim. Kodum nasıl olmalıdır. İyi çalışmalar dilerim.
CREATE TRIGGER SATISLAR
ON satis
AFTER INSERT
SET NOCOUNT ON
IF (PLANT ='10')
(
INSERT INTO xxx.dbo.satistakip('CLIENT','COMPANY','PLANT','MATERIAL','STEXT') VALUES ('satis.client','satis.company','satis.plant','satis.material','satis.stext');
}
Merhaba,
After insert i kullanıp daha sonra girdiğin kaydın max'ını bulup link bağlantısı üzerinden
bu kaydı diğer server'a aktarabilirsin. Provider üzerine"Allow inprocess" ide check etmeyi atlama. aşağıdaki örnekler insert,update,delete gibi method'larda uygulayabilirsin.
Ayırıca bu tip yöntemleri en sağlıklısı db log okuma arşivleme programları ile yapmaktır
Örn: Oracle golden gate,Ms sql db mirroring ile çok sağlıklı verimli olur. db yi de yormaz.
veya uygulama içersinde bu tip db güncellemelerini aynı transaction scope içersinde yapmaktır.
böylece arada bağlantı problemleri vs. durumlarında daha tutarlı olacaktır.
http://www.ibprovider.com/forum/site/viewtopic.php?t=19
http://www.java2s.com/Code/SQLServer/Trigger/Getvaluefromupdatedinsertedanddeleted.htm
Merhaba,
Application transaction scope kullanıyorsa dtc yi target'serverda start etmek gerekli..
http://stackoverflow.com/questions/7473508/unable-to-begin-a-distributed-transaction
ayrıca cdc yede göz atabilirsiniz.