First of all the notification may occur even if there is no actual change in the data. This may happen for example if the server is under heavy load or even problems with the notification may trigger the event. You can try using
HasChanges[
^] if it shows the situation differently.
One thing that may possibly enhance the accuracy is removing the parameter and using a literal instead.
What comes to the increase of notification each time, it sounds like you're creating new subscriptions each time without ending the old ones. Perhaps each call on the web method creates a new listener. Howebver, from the code I can't find calls to Start or Stop methods... For example, have a look at the example in
Detecting Changes with SqlDependency[
^].