나는 다음과 같이 내가 캐시 영역으로 Syscache2를 사용하는 내 닷넷 응용 프로그램을 구성한 SQLDepndencyNHibernate에 SysCache2 및 SQLDependency 문제
를 이용할 수 있도록 SQL Server 2008에서 ENABLE_BROKER 설정 한 :
<syscache2>
<cacheRegion name="BlogEntriesCacheRegion" priority="High">
<dependencies>
<commands>
<add name="BlogEntries"
command="Select EntryId from dbo.Blog_Entries where ENABLED=1"
/>
</commands>
</dependencies>
</cacheRegion>
</syscache2>
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="BlogEntry" table="Blog_Entries">
<cache usage="nonstrict-read-write" region="BlogEntriesCacheRegion"/>
....
</class>
</hibernate-mapping>
나는 또한 쿼리 캐싱
블로그 항목에 대한 쿼리를 사용할 수있다 : 내 HBM 파일은 다음과 같다처음 쿼리 할 때 예상대로 결과가 2 차 캐시에 캐시됩니다.
2010-03-03 12:56:50,583 [7] DEBUG NHibernate.Caches.SysCache2.SysCacheRegion - Cache items for region 'BlogEntriesCacheRegion' have been removed from the cache for the following reason : DependencyChanged
내가 그 기대 : 지금 가서 blog_entries의 행을 변경하는 경우 예상대로
, 모든 캐시는 그것의이 메시지가 만료되어 작동합니다. 다음 페이지 요청에서 쿼리와 그 결과는 다시 캐시에 저장됩니다. 그러나 아무 것도 변경되지 않았더라도 즉시 캐시가 다시 무효화됩니다.
DEBUG NHibernate.Caches.SysCache2.SysCacheRegion - Cache items for region 'BlogEntriesCacheRegion' have been removed from the cache for the following reason : DependencyChanged
내 캐시는 기본 데이터를 변경하지 않고 계속해서 무효화됩니다. 응용 프로그램을 다시 시작하면 캐시가 다시 작동 할 수 있지만 데이터가 처음 캐시 될 때만 (다시 캐시가 다시 작동하지 않으므로 다시 작동하지 않습니다.)
이 문제를 본 사람이 있습니까? 어떤 아이디어가 될 수 있을까요? syscache2가 SQLDependency onChange 이벤트를 처리해야한다고 생각 했었습니다. SQL Server가 SQLDependency depedencyChanged를 계속 보내는 이유를 이해할 수 없습니다.
감사
SQL 프로파일 러에서 어떤 일이 일어나는지 확인할 수 있습니까? SQLDependency에는 이상한 권한이 필요합니다. 아마도 그 일과 관련이 있습니까? –