Вам необходимо понять, как работает SqlDependency. Вы подписываете набор результатов и получаете уведомление, когда этот набор результатов изменился . Вы можете подписать любой набор результатов, то есть любой тип запроса, если он соответствует ограничениям поддерживаемых операторов . Это действительно не имеет значения, если это таблица или представление.
Таким образом, технически вы можете подписаться на определенные уведомления, отправив запрос, специфичный для этой строки, т.е. с жестко закодированным предложением WHERE. Вам придется изменить свой код, чтобы извлекать и кэшировать только необходимые данные построчно, а не извлекать целые таблицы и кэшировать их в памяти. Черт возьми, тебе все равно придется это делать, если ты хотя бы обеспокоен размером этих таблиц. Кэширование целых таблиц должно выполняться только для каталожных и справочных данных, которые изменяются нечасто или не изменяются совсем.
Вы также можете выбрать для извлечения и кэширования разделов данных, т.е. отдельные диапазоны ключей (скажем, между «A» и «D», «E» и «H» и т. д. и подписка на получение уведомлений для этого конкретного раздела данных.
Если вы хотите понять, как работает SqlDependency в моем блоге есть несколько статей, посвященных этому, в том числе распространенные ошибки в программировании SqlDependency и проблем развертывания с SqlDependency .