C# / SQL-Listener, um mir zu sagen, wenn eine Zeile in eine Tabelle eingefügt
Kann jemand die post-Beispiel-code oder Sag mir, wie ein Zuhörer auf mich zu Benachrichtigen (ein Ereignis auslösen), wenn eine neue Zeile eingefügt wird, in eine SQL Server-Datenbank?
Ich nicht wollen, verwenden Sie die SQL Server-messaging-oder broker-Dienste. Ich habe derzeit eine Datei listener, der benachrichtigt mich, wenn neue Zeilen angefügt werden, um ein flat-file. Ich möchte das gleiche zu tun für eine Datenbank-Tabelle.
InformationsquelleAutor greg | 2011-06-15
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie vielleicht auf der Suche für die SqlDependency Klasse, dass können Sie Ihre code registrieren, um benachrichtigt zu werden, wenn änderungen auftreten?
Oder geht das fallen in den Bereich der Dinge, die Sie verbieten, ist es nicht ganz klar?
Müssen Sie irgendeine Art von Datenbank-trigger auf insert-oder poll die Datenbank regelmäßig für neue Rekorde. Ich empfehle, nicht der Letzte Vorschlag, wie, dass kann sehr performance-intensiv.
Andere als die, die Sie nicht geben uns viel weiter zu gehen. Welche version von SQL Server verwenden Sie? Was hast du bereits versucht? Welche Probleme sind Sie gestoßen?
Hier sind ein paar links, die vielleicht zeigen Sie in die richtige Richtung:
Erkunden Trigger in SQL Server
Gewusst wie: Erstellen und Ausführen von CLR-SQL-Server-Trigger
Einer ähnlichen Frage, die nahelegt, dass eine alternative (bessere?) Weg, dies zu tun:
Können SQL-CLR-Trigger machen? Oder gibt es eine bessere Möglichkeit?
Können Sie sql-Benachrichtigungen dies zu tun, aber Sie sagten, Sie don ' T wollen, verwenden Sie die broker. Ansonsten können Sie die Umfrage, aber wie bereits erwähnt dies kann Leistungsprobleme verursachen.
Einen anderen Weg, dies zu tun ist mithilfe von Triggern in der Datenbank-Tabelle zu Tippen, eine Datei auf dem Dateisystem.
Dann mit einem FileSystemWatcher wie Sie schon erwähnten, die Sie bereits tun, in Ihrer Anwendung um eine Benachrichtigung zu erhalten, wenn die Datei geändert wird.
Gibt es Sicherheit-Berechtigungen, die Sie benötigen, zu gewähren, um Ihre Sql Server-Benutzer um dies möglich zu machen, aber wenn das akzeptabel ist, dann funktioniert das, ohne mit dem broker.
Ich auch empfehlen, trigger, Register-Einsätze irgendwo in der db (und Sie müssen die Umfrage-Datenbank sowieso, die ist nicht so teuer, wenn die trigger-ändert eine spezielle Tabelle mit einer einzelnen Zeile). Aber wenn Sie eine IDENTITÄT auf der primären Schlüssel, die Sie überwachen können, den Wert der gegenwärtigen Identität der Tabelle:
Es ist ein hack, aber es ist schnell und Sie brauchen nicht zu ändern Ihre Datenbank (natürlich, es arbeitet nur für insert-Operationen). Jedoch können Sie überspringen, insert-Operationen, wenn zwischen Umfragen identity-Wert geändert wurde, explizit und wurde exakt auf dem Wert im moment des früheren polling (was nicht sehr wahrscheinlich aber).
Ich würde überlegen, CLR-trigger, Lesen Sie Bitte folgenden Artikel...
Erstellen Sie Ihre Erste CLR-Trigger in SQL Server
CLR-Trigger
Als pro "Damien" Sie müssen verwenden Sie die sqldependency-um änderungen zu erkennen.
Beispiel für sqldependency auf der msdn-Website:-
https://msdn.microsoft.com/en-us/library/62xk7953(v=vs. 110).aspx
Auslösen klingt die beste option: