Ich habe SQL Service Broker zwischen zwei Servern über das Netzwerk eingerichtet und es funktioniert in Ordnung. Ich implementiere gerade die Fehlerverarbeitung. Ich habe Prozeduren gespeichert, die beiden Warteschlangen zugeordnet sind, um Nachrichten zu verarbeiten.Erkennen MSSQL Service Broker Absender Seite Fehlermeldungen
In den Fällen, in denen das Senden einer Nachricht fehlschlägt, z. B. beim Versuch, fehlerhaftes XML zu senden, verbleibt die Nachricht in der Absenderwarteschlange. Der Übertragungsstatus lautet
Service Broker hat eine Fehlermeldung zu dieser Konversation erhalten. Service Broker wird die Nachricht nicht übertragen; Es wird gehalten, bis die Anwendung die Konversation beendet.
wenn die Warteschlange abfragt (Stored Procedures gedreht zum Debuggen off) mit select * from sys.transmission_queue
, die is_conversation_error
und is_end_of_dialog
Felder sind 0
und message_type_name
ist die gleiche I verwendet, wenn anstelle des üblichen Fehlertyp sendet.
Gibt es eine Möglichkeit, solche Nachrichten in der Warteschlange zu erkennen? Meine automatische Senderwarteschlange verarbeitet sie momentan als normale Nachrichten.
Alternativ können Sie die Nachrichtenüberprüfung im Vertrag deaktivieren und bei der Verarbeitung der Nachricht auf der Empfangsseite in eine fehlerhafte Nachrichtentabelle einfügen, wenn Sie die Nachricht nicht in XML umwandeln können. –
Es ist lustig, ich habe 'Validierung = None', aber es scheint immer noch XML zu überprüfen. – milez
Seltsam. Sieht der Vertrag auf beiden Seiten so aus (d. H. Initiator und Ziel)? –