2012-04-01 5 views
1

Ich suchte nach einem besseren Mechanismus für die Benachrichtigung meiner Desktop-Clients, dass eine SQL Server-Tabelle geändert hat. Schließen Sie die Option einer App-Server-Ebene aus. Ich suche nach Lösungen, die in das vorhandene Thick Client-> Sql-Servermodell passen. Ich bin vertraut mit Auslösern und Umfragen, aber ich habe auf etwas intelligenteres gehofft.sql Server Änderungsbenachrichtigung und SqlDependency

Eine Option scheint SqlDependency zu sein. Ich schaue mir das im Moment an, habe aber ein paar Erwähnungen darüber gemacht, dass es "Einschränkungen" hat und für viele Veränderungen "ungeeignet" sein kann. Ich habe dazu nicht viele Informationen oder viele aktuelle Codebeispiele gefunden.

Was verwenden Sie für die Benachrichtigung, dass eine SQL Server-Tabelle geändert wurde?

Antwort

2

Wenn Sie keinen Dienst haben, dh alle Änderungen an Tabellen durchlaufen, dann sind Sie auf Abfrage oder Abhängigkeit angewiesen. Alle Abhängigkeit ist in sql Server eigenen Tabelle ändern Code und feuern ein Change-Event. Der zugrundeliegende Mechanismus ist sehr einfach und kann durch eine große Anzahl von Änderungen überschwemmt werden. Der Versuch, die Änderungen im Event-Handler zu rationalisieren, ist bestenfalls problematisch.

Sie könnten irgendwo mit Auslösern zu einer "Kommunikationstabelle" kommen, wo Sie die Rationalisierungslogik hinzufügen könnten, dann Abhängigkeit von dort verwenden.

Anstatt eine einfache Änderung an Spalte1 in Tabelle1 zu erkennen, lösen Sie eine Einfügung in einen Ereignisdatensatz in Ihrer Kommunikationstabelle aus.

Es wird ein PIA sein, weil Sie eine App-Server-Ebene ausgeschlossen haben, Sie haben auch drastisch Ihre Möglichkeiten eingeschränkt, etwas effizientes und nettes zu tun.

+0

Oh, ich hätte eine App Tier wenn ich könnte. Das ist im Moment einfach keine Option:/Es gab nicht viele Informationen über die Abhängigkeiten, nur die eine oder andere kryptische Notiz darüber, dass es ein bisschen zweifelhaft ist. Danke für den Rat. Ich denke, ich werde mit Auslösern an ein paar "Kommunikations" -Tabellen gehen und diese einfach abfragen. – Ian