Da die Frage heute erneut aufkam, würde ich gerne kurz etwas zum Object Change Listener erzählen.
Seit dem Release von Microsoft Dynamics NAV 2009 gibt es nicht mehr die klassische Client/Server-Umgebung. Mit 2009 wurde der neue Rollenbasierte Client (RTC = Role Tailored Client) eingeführt. Dieser ist nur noch für die Anzeige der Daten zuständig, sämtliche Logik wird auf dem neuen Dienst Service Tier ausgeführt.
Wenn man nun in einer NAV 2009 Datenbank entwickelt kann es passieren, dass die Änderungen nicht im RTC auftauchen. Für Entwickler die auch schon in früheren Versionen mit mehrern Clients auf eienr Datenbank entwickelt haben ist dies vermutlich nichts Neues, allerdings hilft in diesem Fall der Neustart des Clients nicht weiter. Dadurch, dass wir nun das ServiceTier zwischen der Datenbank und dem RTC haben, ist ein Neustart des ServiceTiers notwendig.
Da es im Normalfall allerdings nur ein ServiceTier für mehrere Anwender gibt, sollte man dies nicht zu oft machen.
Natürlich ist sich Microsoft darüber im klaren und bietet mit dem Object Change Listener eine einfache Lösung hierfür an.
Besagter Object Change Listener tut nicht mehr und nicht weniger als die Objekte der Datenbank auf Änderungen hin zu überwachen. Wird ein Objekt geändert, so veranlasst er das ServiceTier sich das Objekt neu aus der Datenbank zu laden, anstatt das gecachte Objekt an den RTC zu übergeben.
Wann man diesen selbst einrichten muss und wie das funktioniert ist kurz und knackig in diesem MSDN-Beitrag beschrieben:
MSDN-Article: Activate Object Change Listener
Wenn man wissen möchte ob auf der aktuellen Datenbank der broker aktiviert ist, kann man dies in der sys.databases-Tabelle des SQL-Servers nachschauen. Dort gibt es das Feld is_broker_enabled, welches den aktuellen Status anzeigt (0 = aus, 1= ein).