Möglich? Event für Anwendung erstellen.



  • Hallo,
    ist es möglich in einer Datenbank ein Event zu programmieren, dass nach Änderungen in einer bestimmten Tabelle ausgelöst wird? Welches dann in einer Anwendung regestriert wird um auf die Änderung sofort zu regieren. Also genau wie die zwei bereits standardmässig existierenden Events InfoMessage und StateChange.

    Der SQL-Server ist MS-SQL und Programmiersprache C# .Net.

    Vielen Dank.

    Gruß
    Sven



  • Stichwort Trigger.

    Erstelle ein SqlServerProject.

    Dort kannst du dann auch z.b. C# verwenden.
    Es wird dann ein Assembly erstellt und auf dem SQL bereitgestellt.
    Dieses kannst Du dann von Trigger aus aufrufen.
    Allerdings musst du dich da sehr genau einarbeiten denn hier geht es auch um Sicherheit.
    Nicht alles lässt sich so einfach im Assembly ausführen.



  • Hallo,
    kann ich dann das Event auch in einer Anwendung die von "außen" auf die Datenbank zugreift registrieren?

    Gruß
    Sven



  • Verstehe nicht was du meinst.

    Du erstellst ein Assembly. Dort kannst du auch z.B. einen Clientsocket aufrufen und auf dein Programm verbinden.

    Diese Funktion ruft du in einem Trigger auf wenn das passiert was du möchtest.



  • Nun, mit ADO .NET steht eine Verbindungsklasse zur Datenbank zur Verfügung. Welche eben auch 2 Events anbietet InfoMessage und StateChange. Info Message wird ausgelöst wenn eine Message z.B. mit PRINT ausgelöst wird.

    Vielleicht erkläre ich mal das Szenario:
    Client1 --- Server --- Client2
    Client1 ändert einen Bestimmten Eintrag in einer Tabelle.
    Server führt Änderungen an Tabelle durch.
    Client2 wird per Event auf Änderung aufmerksam gemacht.

    Auf Client1 und 2 läuft eine .Net Anwendung.

    Gruß
    Sven

    PS.: Im Prinzip habe ich eine Lösung. Ich missbrauche einfach das InfoMessage Event.



  • Sowas macht man üblicherweise nicht über den SQL Server, hat dort auch nix verloren. Das wird denke ich auch der Grund sein warum es keinen Support für sowas gibt (oder ich weiss zumindest nicht wie wenn es doch gehen sollte).

    Die Lösung das klassische 3-Schichten Modell zu verwenden:

    Client 1  --------------  App-Server  ---------- SQL-Server
                                |    |
                                |    |
    Client 2  ------------------/    |
                                     |
                                     |
    Client 3  -----------------------/
    

Log in to reply