none
C# İle SQL 'De bir tablodan bir tabloya Insert ve Update Olayı RRS feed

  • Soru

  • Öncelikle Herkese Kolay Gelsin;

    Rota Bazlı bir müşteri takip programı yazıyorum.Yazmış oldugum program Client bilgisayarlarda kullanılıp girilen yada güncellenen veriler clientlarda kurula olan sql server'daki veritabanına kaydediliyor.Nitekim Her yeni günde yeni kayıtlar oluyor yada güncellenen kayıtlar oluyor.Birde na serverda bir veritabanı var tablo isimleri vs. herşey hemen hemen aynı.Ben programımdaki senkronizasyon butonuna absıldıgın client bilgisayarın sql'ine yeni eklenen satırları güncellenen satırları kendi ana veritabanıma nasıl aktarabilirim ?Aslında tüm kayıtları kontrol ettirip aktarmak mümkün fakat kayıt sayısı arttıkça bu aktarım olayı uzun süreceği için en azından sadece yeni eklenen ve update edilmiş satırları görüp aktarabileceği bir method biliyorsanız sizden yardımlarınızı talep ve rica eder teşekkür ederim.

    28 Aralık 2015 Pazartesi 21:50

Yanıtlar

  • Baska sehirde olmak yeterli neden degil (ben baska kitadaki server ile yapiyorum, bircok cloud server baska ulke ve kitada). Ancak hicbir network baglantisinin olmadigi durumlar diyorsan o zaman anlarim ("offline" ya da "occasionally connected" diye bilinen senaryolar - ornegin interneti olmayan notebooklar ile saha calismasi). Sen veritabanini SQL server olarak belirlemissin anladigim kadariyla (bu isler ayni zamanda ne kullandigina bagimli). O zaman asagida verecegim linki incele (link vermeyi sevmesem de konu buraya sigmayacak kadar uzun ve dalli budakli):

    Occasionally connected applications


    • Yanıt Olarak İşaretleyen Serkan Canseven 30 Aralık 2015 Çarşamba 07:40
    29 Aralık 2015 Salı 14:38
    Yanıtlayıcı

Tüm Yanıtlar

  • Replication yöntemlerine bak derim.

    Mail Blog Web Site

    29 Aralık 2015 Salı 06:19
  • 2 veritabanında Tablolar , alanlar , PK ve FK lar birebir aynı ise , ana veritabanının connection bilgilerini projeye ekledikten sonra  hızlı bir şekilde EF ve LINQ ile karşılaştırma yapabilirsiniz.

    Yeni kayıt olup olmadığına bakmak için , sadece PK olan alanı 2 tablo arasında karşılaştırmanız yeterli.Ana tabloda yoksa yeni kayıt anlamına geliyor demektir.Karşılaştırma işlemi PK üzerinden yapıldığı için çok hızlı tamamlanacaktır.

    Update için çeşitli yöntemler mevcut.En basitinden tabloya verinin giriş yapıldığı tarihi tuttuğunuz alan mevcut diyelim.Bu kayıtta herhangi bir değişiklik olduğunda giriş tarihi alanı da güncellenecek. Ardından 2 tablo arasında PK alanındaki değer aynı olup da tarih alanları farklı olan kayıtları aramamız gerekiyor , böylece update olan kayıtları da bulmuş oluyoruz.Tarih alanına index olarak işaretlerseniz karşılaştırma daha hızlı gerçekleşir.

    29 Aralık 2015 Salı 09:06
  • Neden dogrudan server'daki veritabanina yazip okumuyorsunuz? En kolayi o olurdu.

    Rota ne bilmiyorum da, soylediginiz senkronizasyon islemine SQL server'da replikasyon deniyor. Eger hem server, hem de client veritabanlari uzerinde kontrolunuz yoksa isiniz cok cok zor. Bu isin C# ile de pek ilgisi yok, illa kullanmak isterseniz kullanirsiniz arada. Dogrudan SQL server seviyesinde replikasyon, linked server, SSIS kullanarak yapilacak seyler. Eger siz SQL server DBA degilseniz, sisteminizdeki DBA'a danisin. 

    29 Aralık 2015 Salı 10:18
    Yanıtlayıcı
  • Merhaba Cevabınız için çok teşekkür ederim.Bu yöntem projeme uygulanabilecek bir yöntem sql tablo yapılarımı kullanırken henüz primary key ve foreign key alanları henüz oluşturmadım.Bu sordugum durumdan dolayı senkronizasyonu planlanladıgımda oluşturucaktım.Tablo yapımı paylaşsam bana yardımcı olabilirmisiniz acaba ?
    29 Aralık 2015 Salı 13:42
  • Cevabınız için teşekkür ederim Rota mantıgı dediğim sey satış personellerinin müşteri takibini yapabileceği bir yazılım yazıyorum Her satıs elemanın rotası var ve hepsi baska sehirde oldugundan senkronizasyon sekilinde uygulamam gerekiyor.
    29 Aralık 2015 Salı 13:44
  • Baska sehirde olmak yeterli neden degil (ben baska kitadaki server ile yapiyorum, bircok cloud server baska ulke ve kitada). Ancak hicbir network baglantisinin olmadigi durumlar diyorsan o zaman anlarim ("offline" ya da "occasionally connected" diye bilinen senaryolar - ornegin interneti olmayan notebooklar ile saha calismasi). Sen veritabanini SQL server olarak belirlemissin anladigim kadariyla (bu isler ayni zamanda ne kullandigina bagimli). O zaman asagida verecegim linki incele (link vermeyi sevmesem de konu buraya sigmayacak kadar uzun ve dalli budakli):

    Occasionally connected applications


    • Yanıt Olarak İşaretleyen Serkan Canseven 30 Aralık 2015 Çarşamba 07:40
    29 Aralık 2015 Salı 14:38
    Yanıtlayıcı