Tablo güncellemelerini client bilgisayarlara bildirmek

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
delphi_programmer
Üye
Mesajlar: 53
Kayıt: 01 Haz 2005 11:47

Tablo güncellemelerini client bilgisayarlara bildirmek

Mesaj gönderen delphi_programmer »

Selamlar,
Database'de bir tabloda değişiklik olduğunu kullanıcılara nasıl bildirebilirim ?

Bir duyuru programı düşünelim. Admin kişi duyuruyu yazıyor ve gönder diyor. Duyuru database'e kayıt oluyor.

Bu arada client'lar tarafında da yine küçük bir yazılım yeni duyuru geldiğinde göstermeyi düşünüyor :)

Ancak client'ın yeni duyuru olup olmadığını anlamak için ya her 5 dk. da gidip select etmeli,

Ya da Sql Server bir şekilde bu client'lara bildirim yapmalı.

Tabi bu benim düşüncem ama nasıl yapacağımı kestiremedim.
(Her 5 dakikada select yap olayını tabii ki yapabilirim ama client sayısı çok fazla, 500 kadar)

Fikirleriniz için şimdiden teşekkürler.

Not :
Platformlar , SQL Server, Delphi 7.0, Client'larda Windows XP
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
5 dk da bir değilde değilde günde bir vey iki defa yeter gibime geliyor.
ayrıca kullanıcıya manuel kontrol da verirsen iyi olur.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
delphi_programmer
Üye
Mesajlar: 53
Kayıt: 01 Haz 2005 11:47

Mesaj gönderen delphi_programmer »

aslangeri yazdı:s.a.
5 dk da bir değilde değilde günde bir vey iki defa yeter gibime geliyor.
ayrıca kullanıcıya manuel kontrol da verirsen iyi olur.
Günde 1 veya 2 mi ?
Ancak admin kullanıcı mesaj gönderdiğinde client'larda anında çıkması gerekiyor. (en fazla 5 dk. diye düşündüm ama hatta 5 dk. bile çok)

Ben şöyle bir şey düşündüm.

Mesajı gönderen kullanıcı mesajı gönderdiği anda
diğer kullanıcılara tcp soket ile bir tetikleyici işaret göndereceğim.

Bilmemkaç nolu portu dinleyerek bu işareti gören client'lar select cümlesi ile ilgili veriyi alacaklar.

ve bunu monitörün üst kısmında kayan yazı ile gösterecekler.

Keşke daha iyi bir yolu olsaydı.
En son delphi_programmer tarafından 17 Nis 2007 04:30 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

hocam mesaj gönderme ayrı bir şye vt deki değişiklikleri clientlara bildirmek ayrı bir şey.
mesaj gönderecekseniz ayrı. benim söylediğim vt değişiklikleri içindi.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
delphi_programmer
Üye
Mesajlar: 53
Kayıt: 01 Haz 2005 11:47

Mesaj gönderen delphi_programmer »

[quote="aslangeri"]hocam mesaj gönderme ayrı bir şye vt deki değişiklikleri clientlara bildirmek ayrı bir şey.
mesaj gönderecekseniz ayrı. benim söylediğim vt değişiklikleri içindi.[/quote]

VT'ye yazılan şey de mesajın kendisi zaten.
Yani bu projede mesaj göndermek ile VT'deki değişiklikleri bildirmek aynı şey zaten.

Programın amacı kısaca şu :

Bir GÖNDEREN var ve BİRDEN ÇOK ALICI var.
GÖNDEREN bir mesaj yazıyor ve ALICILARA gönderiyor.

Gönderilen mesajların da geriye dönük izlenmesi istendiği için veritabanına kayıt ediliyor.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,
Arkadaş sanırım Firebird de olduğu gibi tetikleyicilerle mesaj yayınlayıp IbEvent gibi bir bilşenle bu mesajı alıp refresh işlemi yapmak istiyor, MSSQL de böyle bir şey varmıdır bilmiyorum ama bence kesinlikle vardır.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

makaleler bolumunde soyle birsey var


viewtopic.php?t=19475
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
delphi_programmer
Üye
Mesajlar: 53
Kayıt: 01 Haz 2005 11:47

Mesaj gönderen delphi_programmer »

Bilgi için teşekkürler.
Evet, makaleler bölümündeki yazı bana gittiğim yolun doğru olduğunu gösterdi.

Makalede diğer client'ları tetiklemek için SQL Trigger kullanılmış.
Benim olayımda mesajı gönderen tek kişi olduğu için, mesaj gönderen programdan direkt olarak client'ların UDP portlarına mesaj gönderebilir ve select işlemlerini yapmalarını sağlayabilirim.

Yaklaşık olarak şöyle :

GONDEREN.EXE tek kişide bulunuyor ve mesajı yazıp gönder tuşuna basar.
Bu mesaj database'e kayıt edilir.
Aynı anda diğer client'ların UDP portuna "yeni_mesaj" gibi bir tetikleyici gönderilir.


ALICI programlar ise belirli bir portu dinler ve yeni_mesaj iletisini gördüklerinde select işlemlerini yaparlar.

Teşekkürler.
Cevapla