Ich habe den folgenden Code, der SqlDependency verwendet, um Änderungen in einer meiner Datenbanken zu überwachen. Es funktioniert großartig, außer jedem Durchlauf erzeugt es seine eigene Queue / Service / Route mit einer GUID in der Datenbank:
Klasse:
%Vor%Ausführung:
%Vor%Anstatt eine eigene Queue / Service / Route zu erstellen, möchte ich sie immer zuerst erstellen und dann meinem Programm mitteilen, sie zu benutzen.
Ich ging voran und erstellte diese Objekte in der Datenbank:
%Vor%und meinen C # -Code geändert, um diese Warteschlange und diesen Dienst zu verwenden:
%Vor%Wenn diese Codeänderungen vorgenommen werden, werden während der Ausführung meines Codes keine Warteschlangen erstellt. Mein Code funktioniert jedoch nicht mehr und meine App erkennt keine Änderungen an meiner Tabelle / Abfrage.
Ich habe tagelang versucht, das herauszufinden, ohne Erfolg, kann mir jemand einen Rat geben? Danke.
Ich habe es herausgefunden - der Fehler war in meinen SQL CREATE-Anweisungen. Ich benutzte:
%Vor%Aber nach Ссылка muss der Befehl CREATE SERVICE den Parameter contract_name in der richtigen Reihenfolge verwenden in der Lage sein, andere Dialoge auf den zu erstellenden Dienst ausrichten zu können.
Mit der folgenden CREATE-Anweisung wurde mein Problem behoben:
%Vor%Seien Sie vorsichtig bei der Verwendung der Klasse SqlDependency - sie enthält Probleme mit Speicherlecks. Hovewer, Sie können eine Open-Source-Realisierung der SqlDependency-Klasse verwenden - SqlDependencyEx . Es verwendet einen Datenbankauslöser und eine native Service Broker-Benachrichtigung, um Ereignisse zu den Tabellenänderungen zu empfangen. Dies ist ein Anwendungsbeispiel:
%Vor%Hoffe, das hilft.
Tags und Links sql-server c# sql-server-2008 sqldependency