You are correct about the sample tracking schema changes.

Just want to mention that I found that I needed to reregister for events after receiving an event. In other words once I got notified, I wouldn't retrieve more events until I reregistered the table. It seemed odd that I would have needed to do that. YMMV.

As far as other options, the service broker sits on top of message queing (msmq). So at least on Windows, you have an alternative for listening for changes - you can connect to the queue directly through c++ rather than going through sql. Of course, that approach isn't going to portable, and it is doubtful it will be simpler.