Уведомление об аннулировании кеша SqlCacheDependency

Я пытаюсь создать зависимость кэша SQL для некоторых справочных данных в моем приложении ASP.NET (ASP.NET 3.5, SQL 2008). Я включил кэширование sql для своей базы данных и пары таблиц с помощью утилиты aspnet_regiis. Я сделал требуемую запись зависимости sqlcache в файле web.config. Я добавил следующий код в событие application_start

ДатаВремя DT = ДатаВремя.Сейчас;

            SqlCacheDependency dep1 = new SqlCacheDependency(databaseName, "Products");

            List<Product> productsList = new List<Product>();
            CacheItemRemovedCallback productRefresh = new CacheItemRemovedCallback(RefreshProducts);

            HttpRuntime.Cache.Insert("Products", productsList, depProducts, dt, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, productRefresh);

Я перезагружаю данные из базы данных в callback-функции RefreshProducts.

По какой-то причине я не могу вызвать функцию обратного вызова при изменении данных в таблице. Я не получаю никаких ошибок времени выполнения, и я вижу из AspNet_SqlCacheQueryRegisteredTablesStoredProcedure, что таблица включена для кэширования. Я протестировал остальную часть кода, заменив sqldependency файловой зависимостью. Когда я изменил файл, функция обратного вызова была вызвана немедленно, поэтому моя ошибка, скорее всего, связана с настройкой зависимости от sqlcache.

Спасибо


person klone    schedule 28.06.2011    source источник


Ответы (1)


Ошибка была в хранимых процедурах MS SQL dbo.AspNet_SqlCacheRegisterTableStoredProcedure и dbo.AspNet_SqlCacheUnRegisterTableStoredProcedure. Эти хранимые процедуры регистрируют и отменяют регистрацию таблиц для мониторинга кэша SQL, но будут работать только для таблиц в схеме по умолчанию. Мои таблицы находились в другой схеме, поэтому триггеры не создавались должным образом. Я изменил эти две хранимые процедуры для обработки таблиц без схемы, и проблема была решена.

person klone    schedule 29.06.2011