2012-05-17 13 views
9

Czy można się dowiedzieć, kiedy i czy zmieniła się zawartość niektórych tabel w bazie danych? W jaki sposób mój serwer SQL może powiadamiać aplikacje klienckie, że dane zostały zmienione przez innego użytkownika? Jak zaimplementować powiadomienia o zapytaniach za pomocą dbGo?Aplikacja bazy danych klienta-serwera: jak powiadomić klientów, że dane zostały zmienione?

Czy moi klienci muszą odpytywać bazę, czy istnieje mechanizm wywołania zwrotnego do tego?

Mój klient to aplikacja Delphi z TADODataSet, a moim serwerem jest SQL Server 2005/2008 obsługujący wielu klientów.

+1

Możliwy duplikat http://stackoverflow.com/q/9671284/960757 – TLama

+1

@TLama, jeszcze nie rozstrzygające rozwiązanie dla TADODataSet i tam SQL-serwer. – ZigiZ

+1

Jeśli [ 'to answer'] (http://stackoverflow.com/a/9671708/960757) jest poprawna, a następnie * dbGo (ADO) nie obsługuje powiadomień * ... – TLama

Odpowiedz

1

Nie, trzeba by zbudować własny "middle tier", aby to zrobić. Najprostszym sposobem jest odpytanie serwera. Bardziej złożonym rozwiązaniem jest zbudowanie własnego serwera "middle-level", który odpytuje bazę danych i przesyła powiadomienia do klientów (z własnym połączeniem klienta).

Rozwiązaniem pośrednim jest posiadanie oddzielnego klienta na serwerze odpytującego tablice, które trzeba "obejrzeć" i zapisać "flagi powiadomienia" w innej tabeli bazy danych, która może być odpytana przez klientów. Przynajmniej w ten sposób klienci mogą odpytywać prostą tabelę z minimalnymi danymi, które zawierają listę zmian, które mogą zostać odczytane przez inne zapytanie. O wiele mniej wysiłku ze strony klientów.

+0

Jest też „mixed-middle-ziemia” sposób: „rekord zmieniło” klient bazy danych rekord zmieniających się aplikacje (w tym logiki po stronie serwera aplikacji) można wysyłać transmisję wiadomości do wszystkich klientów słuchających na warstwie środkowej. Byłby to "natychmiastowy" sposób powiadamiania innych aplikacji o zmianie. Ponadto "oddzielny klient na serwerze" może działać w dłuższych odstępach czasu, aby zmniejszyć ilość odpytywania, i może pominąć cykl odpytywania za każdym razem, gdy odbierze wygenerowane przez klienta wiadomości z powiadomieniami ... – mjn

Powiązane problemy