Zum Inhalt springen

Benachrichtigungen an Programm (Events)


Pedde

Empfohlene Beiträge

Hallo,

ich habe hier eine MS SQL Server 2005 DB und folgende Problemstellung.

Wenn ich einen Datensatz als "In Bearbeitung" markiere (extra Spalte in Tabelle), dann möchte ich, dass alle Clients (Programme) diesen Status des Datensatzes dann auch darstellen ohne immer wieder die DB zyklisch abfragen zu müssen.

Nun meine Frage:

Geht sowas, dass der SQL Server ein Event aussendet, das da sagt "Ich habe mich geändert, bitte Daten erneut abfragen!" oder geht sowas nur über zyklische Abfragen?

Gruß,

Pedde

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mal davon abgesehen, dass das extra markieren eines Datensatzes als "In Bearbeitung" schon ein Designfehler an sich ist: Nein deine Anforderung wird sich so einfach wohl nicht umsetzen lassen.

Eine Möglichkeit wäre die Verwendung von messaging aus der Datenbank heraus, aber ich weiß weder ob MSSQL das bietet noch welche Aufwände das verursachen würde.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mal davon abgesehen, dass das extra markieren eines Datensatzes als "In Bearbeitung" schon ein Designfehler an sich ist...

Warum sollte das ein Designfehler sein, wenn ich es nicht erlauben DARF mehreren Benutzern denselben Datensatz gleichzeitig zu bearbeiten???

--

Pedde

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dafür gibt es Datensatzsperren, die die Datenbank extra dafür bereitstellt.

Man macht dann einen SELECT ... FOR UPDATE und sperrt für die eigene Session den Datensatz. Und zwar 100%ig sicher.

Des weiteren hast Du keinen Datenmüll in den Tabellen stehen. Wenn z.B. das Programm abstürzt, denn dann wäre noch der Eintrag in der Tabelle, dass der Satz in Bearbeitung ist, was natürlich nicht mehr stimmt und dazu führt, dass Du einen Job brauchst der das ganze regelmäßig wieder aufräumt. Gleiches gilt beim Einspielen von Backups. Dort sind dann evtl. Einträge in den Tabellen die nicht die Realität wiederspiegeln.

Von dem zusätzlichen Aufwand zuerst die Locktabelle abzufragen, einen Eintrag zu machen und dann die Daten zu selektieren gar nicht erst zu sprechen.

Daher gilt wieder der alte Leitspruch: Programmiere nichts nach was die DB bereits bietet, denn Du wirst immer schlechter und langsamer sein.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum sollte das ein Designfehler sein, wenn ich es nicht erlauben DARF mehreren Benutzern denselben Datensatz gleichzeitig zu bearbeiten???

--

Pedde

Du solltest dich mehr mit der Funktion einer Datenbank im Allgemeinen beschäftigen ;) Sperrmechanismen bietet jede Datenbank und gehört zu den Grundvorraussetzungen eines jeden DBMS

Link zu diesem Kommentar
Auf anderen Seiten teilen

Abgesehen davon, dass du das echt nicht so machen solltest, kannst du zu dem Thema in den BOL unter "Query Notifications" nachschlagen.

Das bietet mit gewissen Einschraenkungen die von dir geforderten Events.

Natuerlich muss es dann in jede Clientapplikation entsprechend eingebaut werden.

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...