Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
SQl Server Event und Service
Tossi65
myCSharp.de - Member



Dabei seit:
Beiträge: 82

Themenstarter:

SQl Server Event und Service

beantworten | zitieren | melden

Hallo Kollegen,
ich bin kein MS SQL Server Programmierer. Ich komme aus der FireBird Ecke. Und da gibt es eine sehr schöne Sache.
Den Eventalerter! Hiermit kann ich per Datenbank Ereignisse an Anwendungen schicken.

Ich bräuchte diese Eigenschaft auch für den MS SQL Server.
Gibt es so etwas und wie wende ich es an?

Hintergrund:
Wenn bestimmte Daten geschrieben wurden soll eine Benachrichtigung an einen Service generiert werden.

Aktueller Server: MS SQl Server 2012, wird aber demnächst der aktuellste sein.

Vielen Dank.

Torsten
Danke Tossi
private Nachricht | Beiträge des Benutzers
glandorf
myCSharp.de - Member

Avatar #avatar-4144.jpg


Dabei seit:
Beiträge: 80
Herkunft: Chemnitz

beantworten | zitieren | melden

Hallo,

vielleicht gibt dass ein paar Inspirationen: https://gist.github.com/jarrettmeyer/5990daf0db3b1f4fd759df6ed4099685 .

Eine gute Idee ist dein Plan aber nicht.

glandorf
private Nachricht | Beiträge des Benutzers
Tossi65
myCSharp.de - Member



Dabei seit:
Beiträge: 82

Themenstarter:

beantworten | zitieren | melden

Hallo glandorf,
die Replikation auf diese Art und Weise zu fixen kann keine gute Idee sein. Es muss aber einen Fix geben, da die Daten benötigt werden.

In diesem Fall soll ein Dienst auf dem Server eben die Daten an die Zieldatenbank schreiben, wenn neue Daten in der Datenbank eingetragen werden.
Es betrifft ja nur wenige Tabellen. Im Nachgang jetzt die Strukturfehler in der Datenbank zu beheben ist auch nicht ohne. Ist eine Produktions DB und schon sehr groß mit reichlich Anwendungen dran. Das ist der Umweg über einen Service getriggert durch die Datenbank das kleinste übel.

Gruß Torsten
Danke Tossi
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.975

beantworten | zitieren | melden

Schau dir mal SqlDependency an.
Damit kann dein Service sich beim SqlServer registrieren um bei bestimmten Änderungen informiert zu werden.
private Nachricht | Beiträge des Benutzers
Platoon
myCSharp.de - Member



Dabei seit:
Beiträge: 55
Herkunft: NRW

beantworten | zitieren | melden

Hi,

ein bisschen Doku zu dem von FZelle angesprochenem Thema: Abfragebenachrichtigungen

Gruß
.....an unhandled exception is the first way to think about your pattern of programming....
.....nur weil ich nicht weiß was dort passiert, bedeutet es nicht, dass ich nicht weiß, wie man es lösen kann - aber das ist wahrscheinlich....
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.839

beantworten | zitieren | melden

Wenn Du Instanz B der Anwendung informieren willst, weil Instanz A (also Dein Dienst) etwas in der Datenbank aktualisiert hat, dann solltest Du das - wenn möglich - über ein entsprechenden Service und einer Notification (i.d.R. Websockets) umsetzen; nicht direkt über die Datenbank.
Dass jetzt schon zig Anwendungen direkt an der DB hängen und damit Schema-Änderungen nen riesen Impact hat: risk by design. Daher nimmt man eben Services :-)

Datenbank-seitige Notifications wie Eventalerter, SqlDependency oder SqlDependencyRequest (Query Notifications) haben unheimlich viele Nachteile (Skalierung, Permission, Usability, Performance...) und Limitations.
Eine gute Idee, jetzt noch mehr Verantwortung in die DB zu schieben...? Selten der Fall :-)

Der Anwendungsfall von Eventalerter, SqlDependency oder SqlDependencyRequest ist daher vergleichweise selten passend.
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 433
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

Mein erster Gedanke wäre, einfach alle paar x Minuten ein SSIS Job starten, welcher die Daten rüber schaufelt.

In welchem Zeitrahmen müssen den die Daten in der Instanz B verfügbar sein und wie häufig kommen neue Daten rein?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Tom am .
private Nachricht | Beiträge des Benutzers