Verwenden von SqlDependency mit benannten Warteschlangen

8

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.

    
Bert Wagner 10.12.2013, 19:16
quelle

2 Antworten

6

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%     
Bert Wagner 11.12.2013, 15:20
quelle
0

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.

    
dyatchenko 23.02.2015 12:18
quelle