2

ASP.NET アプリケーション (ASP.NET 3.5、SQL 2008) で参照データの SQL キャッシュ依存関係を作成しようとしています。aspnet_regiis ユーティリティを使用して、データベースといくつかのテーブルの SQL キャッシュを有効にしました。必要な sqlcachedependency エントリを web.config に作成しました。application_start イベントに次のコードを追加しました

DateTime dt = DateTime.Now;

            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);

コールバック関数 RefreshProducts でデータベースからデータをリロードします。

何らかの理由で、テーブルのデータを変更するときにコールバック関数を呼び出すことができません。実行時エラーは発生しません。AspNet_SqlCacheQueryRegisteredTablesStoredProcedure から、テーブルのキャッシュが有効になっていることがわかります。sqldependency をファイルの依存関係に置き換えて、残りのコードをテストしました。ファイルを変更すると、コールバック関数がすぐに呼び出されたので、私の間違いはおそらく sqlcachedependency の設定にあります。

ありがとう

4

1 に答える 1

1

エラーは、MSSQLストアドプロシージャdbo.AspNet_SqlCacheRegisterTableStoredProcedureおよびdbo.AspNet_SqlCacheUnRegisterTableStoredProcedureにありました。これらのストアドプロシージャは、SQLキャッシュ監視用にテーブルを登録および登録解除しますが、デフォルトスキーマのテーブルに対してのみ機能します。テーブルが別のスキーマにあるため、トリガーが適切に作成されていませんでした。スキーマ以外のテーブルを処理するようにこれら2つのストアドプロシージャを変更したところ、問題は解決しました

于 2011-06-29T15:55:06.427 に答える